ユーザーが入力バーを更新したときに、残りのAPIにフェッチを実行するつもりです。私が抱えている問題は、componentDidUpdateメソッドがjsonを減速機にディスパッチするアクションクリエータを呼び出し、状態を更新してcomponentDidUpdateを再度呼び出すことです。無限のサイクルを終了するためのアイデアやベストプラクティス?ありがとう!React Redux無限ループ
アクション作成者:
export const fetchFoods = (dispatch, searchText) => {
return fetch(`/nutrition/${searchText}`)
.then(res => res.json())
.then(json => dispatch({type: 'RECEIVE_FOODS', json}))
}
リデューサー:
const foods = (state = [], action) => {
switch (action.type) {
case 'RECEIVE_FOODS':
return action.json
default:
return state
}
}
が反応コンテナ:
const FoodList = React.createClass({
componentDidUpdate: function() {
fetchFoods(this.props.dispatch, this.props.searchText)
},
componentWillMount: function() {
fetchFoods(this.props.dispatch, this.props.searchText)
},
render: function() {
...
}
})
export default connect(
(state) => {
return {searchText: state.searchText, foods: state.foods}
}
)(FoodList)
更新が直ちに更新され、更新が強制されます。 –
トリガするには、 '' connect''(https://github.com/reactjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options)で 'mapDispatchToProps'を使用したいと思うでしょう入力が変化したときの動作[こちら](http://redux.js.org/docs/basics/UsageWithReact.html)についても説明しています。 – robertklep