0
一直呆在這裏一段時間了,我並沒有真的能夠找到答案或工作我的思想圍繞它..所以,我有一個主要組件,爲我服務帶有道具的其他部件稱爲科目。反應路由器,道具在頁面重新加載後不見了
App.js
--------------------------------
getSubjects() {
if(Auth.isUserAuthenticated()) {
let headers = new Headers();
headers.append('Authorization', `bearer ${Auth.getToken()}`);
let fetchInit = {
method: 'GET',
headers: headers
};
return (
fetch('api/subjects', fetchInit)
.then(this.getJSON)
.then((data) => {
this.setState({
subjects: data.doc
});
})
)
}
}
<Route path='/editsubject/:id' render={(props) => <EditSubject {...props}
subjects={this.state.subjects}/>
Edit.js
---------------------------------
componentWillMount() {
let paramId = this.props.match.params.id;
let isSubjectItem = this.props.subjects.filter((sub) => {
return sub._id === paramId;
})[0];
this.setState({subject: isSubjectItem});
}
所有這些工作正常,我可以通過編輯組件中的狀態使用我的主題。 所有tho,每當我嘗試重新加載/刷新頁面,應用程序崩潰。 props.subjects不確定。我猜App.js發送的部分編輯這些道具在頁面重新加載Edit組件時從不調用。
的localStorage的程序已經越過我的腦海裏,但我寧願避免它,希望它只是我缺少有關如何使用反應工作的一些重要組成部分......
任何幫助,將不勝感激!謝謝
刷新頁面時,所有組件狀態和道具都將消失。你需要像'typeof this.props.subjects!=='undefined''這樣的條件,然後才能進行其他操作,顯示某種加載器或某種東西。 –