【发布时间】:2018-12-21 14:38:42
【问题描述】:
这在 setTimeout 中没有绑定,我在其中调用 setState 函数,为什么会发生这种情况?
我在下面添加了codepen,我在js中尝试过相同的代码,它可以工作
<html>
<head>
<title></title>
<meta charset="UTF-8" />
</head>
<body>
<div id="root"></div>
<script src="https://unpkg.com/react@16.3.1/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16.3.1/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.26.0/babel.js"></script>
<script type="text/babel">
const state = {
eventCount: 0,
}
function setState(newState) {
Object.assign(state, newState);
render();
}
setTimeout(
function() {
this.setState({eventCount: 666});
}
.bind(this),
1000
);
function App() {
return (
<div>
<p>
There have been {state.eventCount} events.
</p>
</div>
)
}
function render() {
ReactDOM.render(<App/>, document.getElementById('root'));
}
render();
</script>
</body>
</html>
https://codepen.io/anon/pen/gZgQWX?editors=1011(反应) https://codepen.io/anon/pen/oJZerP?editors=1111(js示例)
【问题讨论】:
标签: javascript reactjs babeljs