我有这个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
答案 0 :(得分:0)
您定义状态的方式就是问题。
您拥有它
state = {
insurance: [
{
tip: "1"
}
]
};
将其更改为:
state = {
insurance:
{
tip: "1"
}
};
为您以this.state.insurance.tip身份访问它,它必须是保险对象中的键。您现在所拥有的this.state.insurance [0] .tip 由于保险是一个阵列。
lmk,如果需要进一步说明。