나는이 React 앱을 가지고 있는데, 바벨 (babel)로 컴파일되고 webpack에 번들로 묶여있다. 사람이의 화살표를 클릭하면,상태를 설정하고 새로운 검색 수행하기
nextWeek() {
this.setState({
today: this.state.today.clone().add(1, 'w')
});
this.searchSessions();
}
previousWeek() {
this.setState({
today: this.state.today.clone().subtract(1, 'w')
});
this.searchSessions();
}
searchSessions() {
this.props.actions.searchSessions({
query: {
range: {
when: {
gte: this.state.today.clone().startOf('week').toISOString(),
lte: this.state.today.clone().endOf('week').toISOString()
}
}
}
})
.then(() => this.setState({loading: false}))
.catch(() => this.setState({loading: false}));
}
그것은 다음 또는 이전 주에 이동 시간표 페이지 TimetableManagePage.js
에서
searchSessions
은 today
상태에서 실행되며, previousWeek
및 nextWeek
이 업데이트됩니다. 그러나 검색을 실행하면 상태가 업데이트되지 않는다는 것을 알게되었습니다.
this.props.actions.searchSessions
갱신하십시오 REDUX 상태를 저장하므로 구성 요소에 새로운 소품을 설정합니다 ...
지금, 나는 어쩌면이 검색 실제로 render
기능에, 모든 상태가 그때까지 변경해야 속해 있다고 생각 .. 그러나 구성 요소의 상태가 변경되면 render
이 다시 실행되어 검색해야하는 것보다 많은 수의 호출이있을 수 있습니다.
오늘 상태 만 업데이트 된 경우 새로운 검색을 수행하는 가장 좋은 방법은 무엇입니까? 내가 componentWillUpdate
하지만이'today' 구성 요소의 유일한 상태 아니다'isSaving','showModal','loading' ....이 –
당신이 componentWillUpdate (nextState)에 코드를 추가하고있다 다시 (state.today가 변경된 경우) 똑같은 일을하십시오. 그걸 한 번만 실행하면됩니다. – wertigom
나는'componentDidUpdate'를 사용하고 있습니다. 모든 상태 변경은 on으로 실행되지만, 끝난 후에는'today'가 변경되었는지 검사하고 그에 따라 검색을 실행합니다. –