改变道具不会导致反应中的重新渲染 - redux app

时间:2017-10-11 14:26:48

标签: javascript reactjs redux react-redux

我有一个react -redux应用程序。它工作正常。但是当使用调用props.dispatch()更新某个特定组件中的props时,使用此props的其他组件不会重新呈现。我认为redux无法识别该特定道具的变化。 对象是

[
   {lunch: 0, dinner: 12, breakfast: 0},
   {lunch: 1, dinner: 2, breakfast: 0}, 
   {lunch: 0, dinner: 12, breakfast: 10}
]

并将此更改为此类

[
   {lunch: 0, dinner: 1, breakfast: 0},
   {lunch: 1, dinner: 2, breakfast: 0}, 
   {lunch: 0, dinner: 1, breakfast: 10}
]

所以对象只有轻微的变化。但是这应该导致在使用这个道具的组件中重新渲染。 但这种情况并非如此。我已经检查了减速器,对象正在改变那里。 重新渲染也被称为其他道具的更改。仅在此对象的情况下。它不是重新渲染。 有什么建议? 编辑:- 在component-

this.props.dispatch({type: actions.SAVE_SELECTED_MEAL, selectedMeal: selected});
减速机中的

-

case actions.SAVE_SELECTED_MEAL: return { ...state, selectedMeal: action.selectedMeal // [{lunch: id, dinner: 12, breakfast: 0}] }

1 个答案:

答案 0 :(得分:2)

我在此redux问题https://github.com/reactjs/redux/issues/585中找到了答案 如果有人遇到类似的问题。 实际上,我正在改变组件中的对象我将代码从const selected = this.state.selectedMeal;更改为const selected = {...this.state.selectedMeal};现在它的工作正常。