Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';排队设置状态';ReactJS中未定义的_Javascript_Reactjs - Fatal编程技术网

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
}}