修改localStorage时mapStateToProps不更新道具

时间:2019-11-12 19:12:21

标签: javascript reactjs redux react-redux

我有一个需要认证的redux应用程序。现在,我正在尝试确保应用程序确保用户在应用程序中执行应用程序时仍可以登录。这是我的App.jsx文件的底部:

function mapStateToProps({ offline, user }) {
    return {
        // we use this to know if we should redirect to auth pages
        // we don't want logged in users to be hitting these static pages
        loggedIn: !!user.token,
        offline,
    };
}

const ConnectedApp = connect(mapStateToProps)(App);

export default ConnectedApp;

我通过chrome开发人员工具清除站点本地存储来测试此功能。然后在网站上执行操作。我放置了许多不同的日志语句。我发现正在调用mapStateToProps,但道具没有改变。该应用程序继续认为用户仍在登录并且状态没有更改。

我一直在关注可以找到的所有在线资源,但似乎无济于事。我想念什么吗?

1 个答案:

答案 0 :(得分:2)

这是因为mapState仅在将操作调度到Redux商店时才重新运行,并且 结果被计算为新的商店状态。修改本地存储不涉及调度Redux操作,因此您的mapState将永远不会运行。

localStorage函数中不要依赖mapState中的值-它们应该 only state参数中提取值,然后返回这些值。 / p>