javascript - TypeError:解构对象后“x”是(不是)“y”
问题描述
在我的反应应用程序中,当我运行此代码时,我得到TypeError: "x" is (not) "y"
:
deletePersonHandler = (personIndex) => {
const { persons } = this.state.persons;
persons.splice(personIndex, 1);
this.setState({ persons });
}
当我不使用解构时没有问题:
deletePersonHandler = (personIndex) => {
const persons = this.state.persons;
persons.splice(personIndex, 1);
this.setState({ persons });
}
如果有帮助,则将此方法作为 click 属性传递给功能组件:
persons = (
<div>
{this.state.persons.map((person, index) => {
return <Person name={person.person} age={person.age} click={() => this.deletePersonHandler(index)} changed={this.nameChangedHandler.bind(this)} />;
})}
</div>
);
为什么解构会有所作为?
解决方案
您正在尝试将其解构this.state.persons
为具有persons
- 属性的对象,但您想要 的persons
属性this.state
,而不是(不存在)的persons
属性。this.state.persons
相反,请执行以下操作:
const { persons } = this.state;
推荐阅读
- git - 暂时恢复到以前的提交,进行更改,保留更改并返回到最新的提交?
- arrays - 是否可以在不激活其 DidSet 属性的情况下使数组为空?
- javascript - 按键计算对象数组(动态)的百分比
- java - 具有不同名称但都调用相同方法的方法
- pyspark - Pyspark csv 写入失败并出现合并(1),但运行重新分区(1)
- java - Gremlin Java - 设置属性值列表
- apple-sign-in - 使用 Apple 生成的令牌登录会忽略过期时间
- apache-flink - flink 不在 std 输出中打印对象
- docusignapi - 使用 Docusign REST API 进行复选框验证
- android - 在 Android 中对多个片段使用单个 webview