![](/img/trans.png)
[英]React: Uncaught TypeError: Cannot read property 'setState' of undefined
[英]Uncaught TypeError: Cannot read property 'setState' of null React
我有以下反应页面并且正在获取
Uncaught TypeError: Cannot read property 'setState' of null
使用计数器时。 似乎与 setState 使用的this
<!DOCTYPE html>
<html>
<head>
<title>counter</title>
<script src="https://unpkg.com/react@15.3.2/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15.3.2/dist/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/4.0.0-beta.3/react-router.min.js"></script>
<head>
<body>
<div id="entry"></div>
<script type="text/babel">
var destination = document.querySelector("#entry");
class Counter extends React.Component {
constructor() {
super();
this.state = { value: 0};
}
increment(){
this.setState(function(prevState){
value: prevState.value + 1
});
};
decrement(){
this.setState(prevState => ({
value: prevState.value - 1
}));
};
render() {
return (
<div>
{this.state.value}
<button onClick={this.increment}>+</button>
<button onClick={this.decrement}>-</button>
</div>
)
}
}
ReactDOM.render(
<div>
<Counter/>
</div>,
destination
)
</script>
</body>
</html>
我只是将increment
更改为旧式函数,但没有用。
您必须以 ES6 的编写模式将上下文传递给您的自定义函数。
有很多方法可以做到这一点,一个很好的起点是这里的站点点 文章。
首先,将您的构造函数更改为 -
constructor() {
super();
this.state = { value: 0};
this.increment = this.increment.bind(this);
this.decrement = this.decrement.bind(this);
}
你也可以在onClick
做同样的事情,但恕我直言,这看起来更整洁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.