无法读取未定义的属性,但已定义

时间:2019-03-15 12:41:23

标签: reactjs mount

我有这个componentDidMount函数:

componentDidMount() {
    const { insurances } = this.props;
    const insuranceId = this.props.match.params.id;

    const insurance = insurances.find(insurance => insurance.id == insuranceId);

    this.setState({ insurance: insurance }, () => {
      console.log("insurance", this.state.insurance.tip); <--- this is what i am talking about
    });
  }

那个console.log()返回一个对象。但是,如果我将其更改为属性之一的console.log(this.state.insurance.tip),则会收到错误: TypeError:无法读取未定义的属性“ tip” 。我不太了解安装的工作原理。可能是因为未安装吗?如果是这样,我该如何解决?

编辑

console.log('insurance',insurance),在setState为corect之前:

id: 1, user_id: 1, tip: "Asigurare", date_exp: "1974-10-14", date_notif: "1975-10-03", …}
created_at: "2019-03-15 10:54:40"
date_exp: "1974-10-14"
date_notif: "1975-10-03"
id: 1
note: "Nam id ipsam sequi."
tip: "Asigurare"
updated_at: "2019-03-15 10:54:40"
user_id: 1

但是如果我这样做,console.log(this.state.insurance)将返回一个具有未定义属性的对象

编辑2 我认为这已经接近我拥有的https://codesandbox.io/s/n72rx0k660

1 个答案:

答案 0 :(得分:0)

您定义状态的方式就是问题。

您拥有它

state = {
 insurance: [
   {
    tip: "1"
   }
 ]
};

将其更改为:

state = {
insurance:
  {
    tip: "1"
  }
};

为您以this.state.insurance.tip身份访问它,它必须是保险对象中的键。您现在所拥有的this.state.insurance [0] .tip 由于保险是一个阵列。

lmk,如果需要进一步说明。