在我的react应用程序中,运行此代码时得到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属性的对象-但您想要的是personsthis.state属性,而不是personsthis.state.persons属性(不存在) 。相反,请执行以下操作:

const { persons } = this.state;

关于javascript - TypeError:解构对象后,“x”为(不是)“y”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50422016/

10-12 15:28