【发布时间】:2019-12-08 16:39:36
【问题描述】:
我有这样一种情况,其中带有 mapStateToProps 的容器中的道具正在更新,组件中的道具正在更新(只是一个字符串),组件正在重新渲染......并且 componentDidUpdate 只是没有关闭。
这是我的连接方法:
export default connect(
state => {
console.log("token",state.Auth.idToken);
return {
token: state.Auth.idToken,
isLoggedIn: state.Auth.idToken !== null ? true : false
}
},
{login}
)(SignIn);
正如您在此处看到的,我将token 与mapStateToProps 一起使用,然后出于调试目的在渲染函数中显示此令牌。
<div className="isoLoginContent">
{this.props.token}
</div>
所以这个token一开始是空的,然后当我使用redux-saga和reducer更新它时,token在render函数中正确显示,所以组件正在重新渲染。但是 componentDidUpdate 没有触发。我没有自定义 shouldComponentUpdate,也没有使用 PureComponent。还有什么可能导致这种情况?
【问题讨论】:
-
我过去曾见过一些问题,即组件实际上是被重新安装而不是更新。您可以在 CDM 中启动 console.log 并查看这里是否发生这种情况吗?
-
是的,我放了 console.log 并且组件实际上正在重新安装,但我不知道为什么会发生这种情况
-
如果它被重新安装,它可能与父母有关。也可以加父组件代码吗?
-
我明白了,我调试并发现 history.push 试图推送到一个新的 url 但它正在重定向回登录页面,因为尚未设置令牌。我相应地调整了逻辑,现在它可以工作了。非常感谢。我想我应该删除这个问题?
-
不,您可以将您的评论发布为答案并将其标记为已回答。
标签: javascript reactjs redux