react中报错Cannot read property 'setState' of undefined ,react模块的函数中获取不到this

Cannot read property 'setState' of undefined 一般这种报错会出在这样的语句中this.setState({name:value});

因为this是undefined,所有没有setState()函数(可以自己console.log(this)是不是undefined);

下面是源码,作为参照:(在index.jsx文件中)

class A extends React.Component{

    constructor(){    

        super();    //这句也很重要,这样才能在里面继承this

        this.sate = {  name: "hello world"};

        //this.click  = this.click.bind(this);  //这句是关键,没有加就会如上的错误,自己可以尝试下

   }

    click(){

    this.setState(name:"hello money")

     }

     render(){

      return   <div><B cc={()=>this.click()}/>{this.state.name}</div>

    }

}

class B extends React.Component{

     render(){

        return <div onClick={this.props.cc}>点击我呀</div>

     }

}


所以关键就是在constructor中有super();this.click = this.click.bind(this);  




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React,当使用setState方法时出现TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))错误的原因通常是因为你将一个非迭代对象传递给了setState方法。通常情况下,这是由于在使用useState或useReducer时,将初始状态设置为了一个非迭代对象,例如null、undefined或数字。在你提供的引用,错误发生在useState的初始化。 正确的写法是将初始状态设置为一个合适的迭代对象。例如,你可以使用一个空数组作为初始状态: const [age, setAge] = useState([]) 或者,你可以根据你的需求设置初始状态为一个有意义的值,比如一个空对象{}。 根据你提供的代码示例,你可以更改List组件的useState初始化为正确的形式: const [age, setAge] = useState(18) 这样就能避免报错了。记得在使用useState时,仔细检查初始状态的值,确保它是一个迭代对象,而不是一个非迭代对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [TypeError undefined is not iterable (cannot read property Symbol(Symbol.iterator))](https://blog.csdn.net/m0_59092234/article/details/123431518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值