我想从我的状态
中提取我的用户ID我的对象可能是未定义的,我想要照亮这个错误,所以我使用了一个三元运算符。但是我仍然得到相同的错误(this.store.getState()。account可能是未定义的)。为什么呢?
var myUser = this.store.getState().account.me.id ? this.store.getState().account.me.id : 0
上下文(但也只是认知噪声) - 我在componentDidMount中使用它来获取从redux状态填充的userID。我是一个可选状态,但帐户不是(这些存储在redux中)
答案 0 :(得分:2)
如果您尝试访问某个未定义的属性,则会引发错误;如果.account
属性未定义,则this.store.getState().account.me.id ?
将抛出。 (三元组不会解决0
,脚本将完全失败)
此外,当您只需要拨打一次电话时,您就会拨打getState()
两次。尝试这样的事情:
const account = this.store.getState().account;
const myUser = account ? account.me.id : 0;
答案 1 :(得分:1)
上述答案将有效,但如果account.me返回undefined,则可能会再次出现相同的错误。在这些访问嵌套属性的情况下,我更喜欢try,catch,因为它可以捕获不能访问任何级别的undefined属性
var myUser;
try {
myUser = this.store.getState().account.me.id;
} catch(err) {
myUser = 0;
}
console.log(myUser);