我有一个使用redux thunk的动作创建者,但发生了一些奇怪的事情
使用此代码:
export const updateShowing = name => {
return (dispatch, getState) => {
console.log(getState().codeToRender.contents, 'first consolelog')
const paramFound = getState().codeToRender.contents.find(param => param.name === name)
console.log(paramFound, 'second consolelog')
dispatch({ type: UPDATE_SHOWING, name })
dispatch(push(`?${updateParamHelper(getState)}`))
}
}
当我在第一个console.log中查看时,我正在使用寻找的键render: true
,但是第二个console.log(我所做的只是在同一数组上查找),由于某种原因,我在同一时间点得到render: false
的意思,我什至看到了两个不同的值通过访问相同的getState
知道为什么会发生这种情况吗?
答案 0 :(得分:0)
UPDATE_SHOWING或其他操作处理程序必须处于变异状态。您的console.log看起来有所不同,因为其中一个可能在登录时按原样显示元素,而另一个在扩展控制台时按原样显示。
尝试在控制台中运行以下内容:
const arr = [{name:'Ben'}];
console.log('expand and name is Jerry',arr);
console.log('as is when logged:',arr[0]);
arr[0].name='Jerry';
输出示例:
expand and name is Jerry ▼[{…}]
▶ 0:{name: "Jerry"}
length: 1
▶ __proto__: Array(0)
as is when logged: {name: "Ben"}
您可以将console.logs更改为:
console.log(JSON.stringify(getState().codeToRender.contents,undefined,2), 'first consolelog');
您可能会发现第一和第二控制台日志的日志相同。