window.location.state.buttonEnabled 总是无法使用 ReactJS

我正在尝试读取的值window.location.state.endButtonEnabled来检查未定义。但是当我实际继续检查 undefined 时,我在 if 条件下得到一个 undefined 错误。在以下代码中:


constructor(props){

        super(props);

        if(window.location.state.endButtonEnabled !== undefined){

            console.log('endButtonEnabled is: '+ window.location.state.endButtonEnabled );

            //Do Something

        }

        else{

            window.location.state = {endButtonEnabled: true};

        }

    }

考虑控制台中的错误:

http://img1.sycdn.imooc.com//612740020001834605550399.jpg

有什么建议?我正在使用最新版本的 ReactJS。


慕田峪4524236
浏览 196回答 2
2回答

万千封印

我决定首先检查window.location.state === undefined. 这导致在使用navigate('/path/destination'). 令人惊讶的是navigate()来自'@reach/router'蜜饯,window.location.state所以我可以在从下一页回来时使用它。所以我最终得到的检查代码是:if(window.location.state === undefined){    window.location.state = {endButtonEnabled: false}}else{    window.location.state = {endButtonEnabled: true}}第一次加载页面时,此代码不会中断。这可能不是状态管理事物的理想方式,但这种方式对我有用。我想要点是:按照文档说的做,而不是像我做的那样。

暮色呼如

window.location 对象中没有“状态”属性。因此 window.location.state 在您第一次运行检查时未定义,从而破坏了您的代码。它甚至没有到达endButtonEnabled财产。你为什么要把状态放入 window.location 呢?我假设您正在尝试管理组件的状态?你不应该在 window.location 内部这样做,整个 window 对象是由浏览器创建的,而不是你应该在没有充分理由的情况下改变的东西。查看这些react 文档以更好地了解如何管理状态。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript