gpt4 book ai didi

reactjs - Redux 状态没有立即更新?

转载 作者:行者123 更新时间:2023-12-05 01:18:57 26 4
gpt4 key购买 nike

setCurrentPage 只是将对象存储到我的全局存储中的页面对象中。所以如果我在设置后立即尝试访问它.. 似乎有延迟并且对象是空的。但是如果我在按钮中控制台记录相同的对象并单击它..它被填充。

redux 是否存在我不知道的延迟?我该怎么做才能让它发挥作用?它搞乱了我的代码...

谢谢你的帮助

// initialState.js // my global redux store
playlist: {
currentPage: {}
}

// someComponent
let tempPage = new Page();
tempPage.controlNode = someAPItoGetControlNode(); //synchronous
this.props.actions.setCurrentPage(tempPage); //tempPage.controlNode contains object correctly
console.log(this.props.currentPage); //empty object. WHY???

// in some function in the same component i call in a button
function seeCurrentPage() {
console.log(this.props.currentPage); //works!
}

// reducer
case types.SET_CURRENT_PAGE: {
action.pageObj.selected = true;
return Object.assign({}, state, {currentPage: action.pageObj});
}

// action
export function setCurrentPage(pageObj) {
return { type: types.SET_CURRENT_PAGE, pageObj: pageObj };
}

最佳答案

延迟信息的原因不是因为 redux,而是因为你的 component 异步执行。

// someComponent
let tempPage = new Page();
tempPage.controlNode = someAPItoGetControlNode(); //synchronous
this.props.actions.setCurrentPage(tempPage); //tempPage.controlNode contains object correctly
console.log(this.props.currentPage);

在上面的代码中,您的组件触发一个 Action ,然后在记录 this.props.currentPage 之后立即触发。然而到那个时候 redux store 不会更新,因此你会得到一个旧的结果

你可以做的是像这样登录componentWillReceiveProps函数

componentWillReceiveProps(nextProps) {
console.log(nextProps.currentPage)
}

关于reactjs - Redux 状态没有立即更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42778511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com