Javascript 设置超时。只能更新已安装或正在安装的组件

Javascript 设置超时。只能更新已安装或正在安装的组件,javascript,reactjs,settimeout,Javascript,Reactjs,Settimeout,我是react的新手,我试图在1秒后改变状态 export class Header extends Component { constructor() { super() this.state = {name: 'Will'} } render() { setTimeout(() => { this.setState({ name: 'Bob' }) }, 2000); return ( <h1> {this.stat

我是react的新手,我试图在1秒后改变状态

export class Header extends Component {

 constructor() {
  super()
  this.state = {name: 'Will'}
 }

 render() {

  setTimeout(() => {
   this.setState({ name: 'Bob' })
  }, 2000);

  return (
    <h1>
     {this.state.name}
   </h1>
  )
 }
}
但是他给了我这个警告

警告:只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用setState、replaceState或forceUpdate。这是禁止的。 请检查标题组件的代码

首先,渲染函数不应有任何副作用,例如启动计时器。在componentDidMount中移动该代码。另外,清除componentWillUnmount中的超时,以确保移除组件后超时不会生效。首先,渲染函数不应该有任何副作用,例如启动计时器。在componentDidMount中移动该代码。另外,清除componentWillUnmount中的超时,以确保移除组件后超时不会生效。这应该可以消除你所犯的错误