TypeError:无法读取未定义的属性“文本”

时间:2019-12-01 01:18:19

标签: javascript reactjs

constructor() {
  super()
  this.state = {
    privilegesOption: privilegesOption: [{
      key: 1,
      text: "Admin",
      value: 1
    }, {
      key: 2,
      text: "Cashier",
      value: 2
    }]
  }
  this.foo = this.foo.bind(this)
}

foo() {
  let privilegesOut = this.state.privilegesOption.find(e => e.value === 1);
  console.log(privilegesOut.text)
}

为什么在使用.find之后调用对象属性,为什么仍然出现此错误? 如果我使用this.state.privilegesOption [0] .text,它会起作用

2 个答案:

答案 0 :(得分:0)

与此有关的一些错误最好在某些空间得到解决,我想您正在尝试做的是,我已将privilegesOption转换为包含对象[]的数组{}其中对象key:value对用逗号,

分隔
this.state = {
    privilegesOption: [
        {
            key: 1,
            text: "Admin",
            value: 1
        },
        {
            key: 2,
            text: "Cashier",
            value: 2
        }
    ]
}

对于find值为1的对象,您完全正确

let privilagesOut = this.state.privilegesOption.find(x => x.value == 1)

答案 1 :(得分:0)

您发布的代码段语法错误(请按“运行代码段”查看)。 这是带有固定语法错误的完整代码段:

class Y {}
class X extends Y {
  constructor() {
    super();
    this.state = {
      privilegesOption: [
        {
          key: 1,
          text: "Admin",
          value: 1
        },
        {
          key: 2,
          text: "Cashier",
          value: 2
        }
      ]
    };

    let privilegesOut = this.state.privilegesOption.find(e => e.value === 1);
    console.log(privilegesOut.text);
  }
}
new X();

它成功在控制台上输出“ Admin”。