0

Не могу разобраться с работой setState() у React.js. При обработке события выбрасывает ошибку setState is not a function Привожу пример кода. Работаю с версией 16.

class Test extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            message: 'nothing'
        }
    }
changeText() {
    this.setState({
        message: 'new text'
    });
}

render() {
    return (
        <div className={'container'}>
            <h2 onClick={this.changeText}>Click me!</h2>
            <p>{this.state.message}</p>
        </div>
    );
}

}

ReactDOM.render(<Test/>, document.getElementById('root'));

<div id="root"></div>

<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>
Areshka
  • 739

1 Answers1

2

Проблема в том, что форма объявления функции changeText() {... теряет контекст. Нужно либо использовать arrow function - changeText = () => {..., либо привязывать контекст к функции в вызове {this.changeText.bind(this)}

DiDex
  • 2,298
  • Спасибо, со стрелочной функцией работает. Буду разбираться. – Areshka Apr 28 '18 at 03:43