属性在触发 redux 调度后不更新



下班后我不得不寻求帮助,我的useEffect并不总是适用于reduxs调度操作。

const ScreenA = { currentItem, updatedItem } => {
useEffect(() => {
if (currentItem.id === updatedItem.id) { // Do stuff } 
}, [updatedItem]) // XX Is not changing 
... // do stuf
const mapStateToProps = (state) => {
console.log("AAABB ScreenA.mapStateToProps updatedItem: ", state.updatedItem) // XX I receive new updated id!! but it doesn't change the prop.updatedItem for ScreenA and useEffect is not calling. 
return {
updatedItem: state.updatedItem,
}
}
export default connect(mapStateToProps)(FeedScreen)
}

我的减速器更新

const initialState = {
updatedItem: undefined,
}
export default (state = initialState, action) => {
switch (action.type) {
case ITEM_CHANGED:
console.log("AAABB reducer.addChangedItem.ITEM_CHANGED: " + action.t) // Is printing after every dispatch call
return {
...state,
updatedItem: action.updatedItem,
}
// I tried also with 
return {  
updatedItem: action.updatedItem,
}
default:
return state
}
}

奇怪的是,如果我在ScreenB到ScreenA之间发送更改操作,但在ScreenC到Screen A之间不发送,这是有效的。(这与我发送行动的方式相同。

也展开更新的物品

由于您更新的项目是一个可能会导致突变的对象。似乎不太可能,但这是你在不使用平面数据时面临的问题。通常情况下,您在redux中的操作上有一个type和一个payload(未更新项目(。

return {
...state,
updatedItem: {...action.updatedItem},
}

如果这不起作用,那么你的useEffect中可能有东西坏了,你需要登录其中并显示结果。

相关内容

  • 没有找到相关文章

最新更新