为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪4524236 2021-08-26 15:17:01
我正在尝试读取的值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};        }    }考虑控制台中的错误:有什么建议?我正在使用最新版本的 ReactJS。
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

我决定首先检查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}

}

第一次加载页面时,此代码不会中断。这可能不是状态管理事物的理想方式,但这种方式对我有用。我想要点是:按照文档说的做,而不是像我做的那样。


查看完整回答
反对 回复 2021-08-26
?
暮色呼如

TA贡献1853条经验 获得超9个赞

window.location 对象中没有“状态”属性。因此 window.location.state 在您第一次运行检查时未定义,从而破坏了您的代码。它甚至没有到达endButtonEnabled财产。

你为什么要把状态放入 window.location 呢?我假设您正在尝试管理组件的状态?你不应该在 window.location 内部这样做,整个 window 对象是由浏览器创建的,而不是你应该在没有充分理由的情况下改变的东西。查看这些react 文档以更好地了解如何管理状态。


查看完整回答
反对 回复 2021-08-26
  • 2 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信