我是React的新手,刚刚玩过更新计时器示例
var Timer = React.createClass({
displayName: 'Timer',
getInitialState: function() {
return {secondsElapsed: 0};
},
tick: function() {
console.log("tick", this.isMounted())
if (this.isMounted()) {
this.setState({secondsElapsed: this.state.secondsElapsed + 1});
}
},
componentWillMount: function() {
this.interval = setInterval(this.tick, 1000);
},
componentWillUnmount: function() {
clearInterval(this.interval);
},
render: function() {
return (
React.DOM.div(null, "Seconds Elapsed: ", this.state.secondsElapsed)
);
}
});
React.renderComponent(Timer(null), document.body);
但是我遇到了一个错误,第一个勾选工作,我看到它从0渲染到1但是之后我得到以下错误。
在V0.8上我收到此错误
未捕获错误:不变违规:replaceState(...):在现有状态转换期间(例如在渲染中)无法更新。这可能会导致无限循环,因此被禁止。
v0.9显示此错误
未捕获的TypeError:在instanceof检查中期望一个函数,但得到#
如果我在this.state.secondsElapsed的渲染器函数中执行控制台登录,它将继续每秒递增。它只有当我尝试在返回值中引用它时才会出错。
我错过了什么?