TypeError:" x"是(不)" y"解构对象后

时间:2018-05-19 05:16:34

标签: javascript reactjs destructuring

在我的反应应用中,当我运行此代码时,我得到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>
        );

为什么解构有所作为?

1 个答案:

答案 0 :(得分:4)

您尝试将this.state.persons解构为具有persons属性的对象 - 但您希望persons的{​​{1}}属性,而不是this.state属性1}} persons的属性(不存在)。相反,做:

this.state.persons