Javascript React状态定义为属性深度克隆返回';未定义';
我正在尝试编写一个简单的ToDo应用程序 单击Javascript React状态定义为属性深度克隆返回';未定义';,javascript,reactjs,babeljs,Javascript,Reactjs,Babeljs,我正在尝试编写一个简单的ToDo应用程序 单击TodoItem应该从状态中删除一个项目,但是当我这样做时,我得到一个TypeError:this.state是未定义的。我不知道怎么了 我的代码如下所示: ----App.js---- 从“React”导入React; 从“/components/TodoItem”导入TodoItem; 类应用程序扩展了React.Component{ 状态={ 项目:{ 项目1:{文本:“Nazwa项目1”,isDone:false}, 项目2:{文本:“Naz
TodoItem
应该从状态中删除一个项目,但是当我这样做时,我得到一个TypeError:this.state是未定义的
。我不知道怎么了
我的代码如下所示:
----App.js----
从“React”导入React;
从“/components/TodoItem”导入TodoItem;
类应用程序扩展了React.Component{
状态={
项目:{
项目1:{文本:“Nazwa项目1”,isDone:false},
项目2:{文本:“Nazwa项目2”,isDone:false},
项目3:{文本:“Nazwa项目3”,isDone:false},
项目4:{文本:“Nazwa项目4”,isDone:false}
}
};
removeItem(键){
const items={…this.state.items};//类型错误:this.state未定义
控制台日志(项目);
}
render(){
返回(
{Object.keys(this.state.items).map(key=>(
))}
);
}
}
导出默认应用程序;
----TodoItem.js----
从“React”导入React;
const TodoItem=道具=>{
返回(
props.removietem(props.index)}>
{props.item.text}
{props.item.isDone?“zrobione”:“niezrobione”}
);
};
将默认值导出到doitem;
问题在于此
绑定到您的函数,而不是类
为了防止出现这种情况,您可以使用arrow函数将this
绑定到类,或者调用.bind
方法
这将使它发挥作用:
removeItem = (key) => {
const items = { ...this.state.items };
console.log(items);
}
或者:
removeItem={this.removeItem.bind(this)}
如果他们有正确的传输设置(他们可能会这样做),这里可能会有一个更大的问题。但是一个好的答案是它改变了什么,为什么,以及它是如何工作的。(并可能删除了希望现在出现的错误注释。)无论如何,这是一个opt重复,前面的答案很好地涵盖了这一点。更改为箭头函数解决了一个问题。@T.J.Crowder在这些方面我是个傻瓜:(
removeItem = (key) => {
const items = { ...this.state.items };
console.log(items);
}
removeItem={this.removeItem.bind(this)}