我遇到了setState()的问题。
这是我的routes.tsx文件
export const Routes = (props:any) => (
<Router {...props}>
<Route path="/" component={Miramir}>
<Route path="/profile">
<IndexRoute component={Profile} />
<Route path="/profile/update" component={ProfileUpdate} />
</Route>
</Route>
所以,当我尝试使用/profile/update
路线时
我收到警告,并在/profile
/profile/update
路由的组件
这是一个错误
Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the CountDown component.
组件CountDown
componentDidMount = () => {
let timeLeft = this.secondsToTime(this.state.date);
this.setState({time: timeLeft});
}
_countDown = () => {
this.setState({
time: this.secondsToTime(this.state.date)
})
}
每秒呼叫_countDown
希望你的帮助!
由于
答案 0 :(得分:2)
您可能会通过_countDown()
致电setInterval()
我想象。您是否在componentWillUnmount()
?
答案 1 :(得分:0)
在组件装载之前无法调用 _countDown (这意味着已经调用了组件render方法,然后调用 _countDown 函数)。
在setInterval中调用_countDown可能会解决,但如果渲染方法花费的时间比setInterval中提供的时间多,则可能会再次失败。
_countDown = () => {
this.setState({
time: this.secondsToTime(this.state.date)
})
}