遵循语法

const INITIAL_STATE = {
  userIsActive: getAccount() ? getAccount().status === "open" : false
};


导致浏览器抛出TypeError: Object(...) is not a function错误,我将其精确定位为特定语法,getAccount()仅返回类似

{
  status: "open"
}


更改为完全正常,甚至返回正确的数据

const accStatus = () => {
  try {
    return getAccount() ? getAccount().status === "open" : false;
  } catch (e) {
    console.error(e);
    return false;
  }
};

const INITIAL_STATE = {
  userIsActive: accStatus
};


但我不明白为什么一开始它不起作用?

编辑:不触发catch语句,这很奇怪

最佳答案

在第一个示例中,userIsActive是布尔值,而在第二个示例中,它是一个返回布尔值的函数。这可能会起作用:

const INITIAL_STATE = {
  userIsActive: () => getAccount() ? getAccount().status === "open" : false
};

07-24 14:16