reactjs - React - 无法读取 null 的属性 'setState'

标签 reactjs ecmascript-6

我知道有类似的线程讨论范围问题。

使用以下组件

import React from 'react';
import ReactDOM from 'react-dom';

class Example extends React.Component {

    constructor(props) {
        super(props);

        this.state = {
            counter: 0
        }
    }

    addMore() {
        this.setState({
            counter: this.state.counter + 1
        });
    }

    render() {
        return (

            <div onClick={ this.addMore }>
                <p>counter: { this.state.counter }</p>
            </div>

        );
    }
}

if (document.getElementById('example')) {
    ReactDOM.render(<Example />, document.getElementById('example'));
}

当您单击div时你得到Cannot read property 'setState' of null

我知道你可以做类似 this.addMore.bind(this) 的事情但所有这些看起来都很奇怪,额外的样板样式代码只是为了让它工作。

<小时/>

什么被认为是最优雅的方法?人们肯定有一种偏好的方式,除了让人眼睛酸痛之外,还有其好处?

最佳答案

addMore = () => {
  this.setState({
    counter: this.state.counter + 1
  });
}

箭头语法会为您处理 this 绑定(bind)

查看这个很棒的链接以获取更多信息,它显示了实现此目的的多种方法 http://egorsmirnov.me/2015/08/16/react-and-es6-part3.html

关于reactjs - React - 无法读取 null 的属性 'setState',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644583/

相关文章:

javascript - react : using state in a passed callback function to a class constructor doesnt use latest version of state

javascript - 我需要使用什么生命周期 Hook ? - react

reactjs - 这个通量 Action 和这个函数调用之间有什么区别?

javascript - 迭代 react 组件

javascript - Mocha - 运行和解析两个异步/等待调用

reactjs - 从 Stripe 预建结账成功后更新数据库中的用户

javascript - 如何在reactjs中的交易 View 图表库中添加自定义指标

javascript - ES6 标记的​​模板函数如何解释它们的参数顺序?

javascript - 类中的箭头函数

javascript - 如何为 'extend' 提供动态值? (或 'how does extend work in this case' ?)