Javascript 无法读取属性';排队设置状态';ReactJS中未定义的
我不太清楚为什么会出现这个错误Javascript 无法读取属性';排队设置状态';ReactJS中未定义的,javascript,reactjs,Javascript,Reactjs,我不太清楚为什么会出现这个错误 class ContentProcessing extends Component { constructor(props) { super(props); this.state = {content: currentData}; this.setData = this.setData.bind(this); } setData(data) { this.setState
class ContentProcessing extends Component {
constructor(props) {
super(props);
this.state = {content: currentData};
this.setData = this.setData.bind(this);
}
setData(data) {
this.setState({
content: data
});
}
render() {
return (
<div>
<Card title={this.state.content} />
</div>
);
}
}
基本上,我是从另一个类中的一个按钮启动setData,只要我单击它,我的页面就会中断,并收到错误
我检查了一下,在setData()中,这个.state
是未定义的,所以我想这可能就是问题的根源
我已经看过了其他几个有同样问题的答案,但它们的修复似乎对我不起作用。在构造函数中,您有:
this.state = {content: currentData};
当前数据从何而来?如果它应该作为道具传递,则将该行更改为:
this.state = {content: prop.currentData};
我猜您正在从卡组件调用setData 如果是这种情况,将setData作为道具发送到卡组件
// Below code snippet in ContentProcessing component
<div>
<Card
title={this.state.content}
setData={this.setData}
/>
</div>
此设置数据是无用的,因为它将一直保持
未定义
setData(data) {
this.setState({
content: data
});
}
您可以使用某种类型的事件
,它将负责setState()
类似的操作:
render() {
return (
<div>
<Card title={this.state.content} onClick={() => {this.setData}}/>
</div>
);
}
}
render(){
返回(
{this.setData}}/>
);
}
}
此错误是因为中的This.setState未绑定到主类中的This。如果要将setState传递到其他地方,则需要首先在其主类中绑定它:
class ContentProcessing extends Component {
constructor(props) {
super(props);
this.state = {content: currentData};
this.setData = this.setData.bind(this);
this.setState = this.setState.bind(this); // <- try by adding this line
}}
类内容处理扩展组件{
建造师(道具){
超级(道具);
this.state={content:currentData};
this.setData=this.setData.bind(this);
this.setState=this.setState.bind(this);//您没有在setData()中使用this.state
?我不是因为我不能,我需要使用这个.stestate,否则它实际上不会改变这个.state。你在这里发布的代码似乎没有问题。你需要发布你是如何创建组件和调用setData函数的,也许我们可以帮你。它不是一个道具。它只是我希望在页面加载时加载的默认信息。这就是行得通,我不认为这是导致问题的原因我已经能够访问它了,只是如果我启动setData,它会给我一个错误,我不明白为什么要更清楚地说明实际问题,很抱歉,我已经从另一个类调用setData了,问题发生在我启动它的时候。我看不到调用setDa的任何地方以上代码中的ta?我没有发布。这并不重要,因为这部分工作正常。我基本上在做你发布的内容。
render() {
return (
<div>
<Card title={this.state.content} onClick={() => {this.setData}}/>
</div>
);
}
}
class ContentProcessing extends Component {
constructor(props) {
super(props);
this.state = {content: currentData};
this.setData = this.setData.bind(this);
this.setState = this.setState.bind(this); // <- try by adding this line
}}