当前位置: 首页 > 面试题库 >

获取错误无法读取未定义的属性“ setState”

彭修筠
2023-03-14
问题内容

我是Reactjs的新手。我正在尝试做一个非常简单的事情:当用户在文本区域内更改文本时,在render函数中更新div。有什么建议?

class HTMLEditor extends React.Component {



  constructor(props) {

    super(props);

    this.state = {value: 'Put here HTML'};

  }





  handleChange(e) {

    this.setState({value: e.currentTarget.value});

  }





  render() {

    return (

      <div>

      <textarea defaultValue={this.state.value} onChange={ this.handleChange } />

        <div>{this.state.value}</div>

      </div>

    );

  }

}



ReactDOM.render(

  <HTMLEditor />,

  document.getElementById('container')

);

问题答案:

您应该绑定该handleChange函数。您收到此错误的原因是,在handleChange函数中,this键盘操作未引用React类的上下文,因此您需要绑定该函数。

看到这个答案 why do you need to bind event handlers in React

class HTMLEditor extends React.Component {



  constructor(props) {

    super(props);

    this.state = {value: 'Put here HTML'};

  }





  handleChange = (e) =>{

    this.setState({value: e.currentTarget.value});

  }





  render() {

    return (

      <div>

      <textarea defaultValue={this.state.value} onChange={ this.handleChange } />

        <div>{this.state.value}</div>

      </div>

    );

  }

}



ReactDOM.render(

  <HTMLEditor />,

  document.getElementById('container')

);


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="container"></div>


 类似资料:
  • 我搜索了这个网站,发现了类似的问题,但没有解决我的问题。当我滚动到一个div时,我试图使它固定在屏幕顶部。但我一直在犯错误: "(index): 59未捕获类型错误:无法读取未定义的属性'top'at(index): 59" 我还在学习jQuery,不能解决这个问题。

  • 我正在选择area_enninFantry的所有子div,并循环调整某些子div的文本。cardArray是一个全局常量,myId在父函数中定义。 未捕获的TypeError:无法读取未定义的属性(读取“getAttribute”) 我在这篇文章中读到,这可能是因为字段/元素的内容可能是DOM元素,我应该用$()包装它们,所以我确实这样做了——将两个变量都更改为$(元素)[a]. attr(“标题

  • 我遇到了一个有趣的问题,这使我感到困惑。我正在执行一个正确返回数据的Sharepoint RestAPI调用,当我在数据上运行for循环时,它生成html,但仍然抛出我用作标题的错误。代码如下。如果我记录每个循环,它将返回值。HTML也可以很好地工作。问题是错误仍然会出现。

  • 问题内容: 我正在使用jQuery将表单字段发布到PHP文件,该文件仅根据是否工作而返回1/0。 代码摘录: 但是,每次成功(html == 1)时,控制台都会引发错误“未捕获的TypeError:无法读取未定义的属性’defaultView’”,并且警报永远不会发生…? Google似乎没有关于此错误和jQuery的大量信息,谁知道原因? 问题答案: 这是因为以前不是您要处理的内容,现在是jQu

  • 我的代码: 错误: 未处理PromisejectionWarning:TypeError:无法读取未定义的未处理PromisejectionWarning:未处理的promise拒绝的属性“forEach”。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:1)(节点:7188)[DEP0018]弃用警告:未处理的promise