嵌套路由错误(react-router)

时间:2017-01-20 12:02:00

标签: javascript reactjs react-router

我遇到了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

希望你的帮助!

由于

2 个答案:

答案 0 :(得分:2)

您可能会通过_countDown()致电setInterval()我想象。您是否在componentWillUnmount()

中明确了Interval

答案 1 :(得分:0)

在组件装载之前无法调用 _countDown (这意味着已经调用了组件render方法,然后调用 _countDown 函数)。

在setInterval中调用_countDown可能会解决,但如果渲染方法花费的时间比setInterval中提供的时间多,则可能会再次失败。

_countDown = () => {
    this.setState({
      time: this.secondsToTime(this.state.date)
    })
  }