【问题标题】:Expression "Something" ? "Something" : "Something else" shorter? [duplicate]表达“某事”? "Something" : "Something else" 更短? [复制]
【发布时间】:2019-09-09 20:40:14
【问题描述】:

快速提问。我可以写得更短吗?

实际上,我希望有相同的变量,我可以取值:

{this.state.members[activeMemberId] ? this.state.members[activeMemberId].id : null}

例如

{this.state.members[activeMemberId] ? (<-the same).id : null}

【问题讨论】:

  • id 是什么?
  • 是...表达式 && 表达式而不是表达式?表达式:空

标签: javascript reactjs


【解决方案1】:

注意不要在尝试访问undefined的id属性时遇到未定义的引用异常

function getMemberId(activeMemberId) {
    this.state = { members: {
      id1: { id: 1 }
    } };
    const { members: { [activeMemberId]: { id = null } = {} } = {} } = this.state;
    return id;
 }
 
 console.log(getMemberId('id1'));
 console.log(getMemberId('id2'));
 
 // Or you could chain the && operator and || operator
 function getMemberIdAlt(activeMemberId) {
    this.state = { members: {
      id1: { id: 1 }
    } };
    
    return (
      this.state
      && this.state.members
      && this.state.members[activeMemberId]
      && this.state.members[activeMemberId].id
    ) || null;
 }
 
 console.log(getMemberIdAlt('id1'));
 console.log(getMemberIdAlt('id2'));

【讨论】:

    【解决方案2】:

    您可以使用||

    this.state.members[activeMemberId].id || null
    

    【讨论】:

      【解决方案3】:

      你可以使用逻辑或

      { this.state.members[activeMemberId].id || null }
      

      这是如何工作的?

         x  ||  y 
         |
         |________________ If `x` is true return `x` else return `y`
      

      拇指规则:- 逻辑或返回第一个真值,如果有其他值则返回最后一个值

      【讨论】:

        【解决方案4】:

        你可以这样做:

        this.state.members[activeMemberId].id || null
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-04
          • 2020-08-07
          • 1970-01-01
          • 1970-01-01
          • 2013-06-10
          • 1970-01-01
          相关资源
          最近更新 更多