1

在下面的代码中,_updateQID 方法是在另一个组件发出事件“Questions.updateHeader”时触发的。当发出事件并触发 _updateQID 时,我在控制台中收到以下警告:

警告:forceUpdate(...):在现有状态转换期间无法更新(例如在render或另一个组件的构造函数内)。渲染方法应该是 props 和 state 的纯函数;构造函数副作用是一种反模式,但可以移至componentWillMount.

import React, { Component } from 'react'
import { subscribe, model } from '~/lib'
import { ContextMenu } from 'project-components'
import _ from 'lodash'
import EventEmitter from 'eventemitter3'

import './Headers.styl'



class Headers extends React.Component {
    constructor (props) {
        super(props)
        this.ee = new EventEmitter()
        this._updateQID = this._updateQID.bind(this)
    }

  componentDidMount () {
    model.on('Questions.updateHeader', this._updateQID.bind(this))
  }

  componentWillUnmount () {
    model.removeListener('Questions.updateHeader', this._updateQID.bind(this))
  }


 _updateQID = () =>{
     this.forceUpdate()
  }


  render () {
    return (<div className="header">DUMMY TEST FOR HEADER</div>)
  }
}

export default Headers

请帮忙

4

1 回答 1

2

好的,我们解决了它...我们正在触发事件以从另一个组件的 render 方法强制更新 Headers 组件...在将其放入 componentDidUpdate 而不是 render 之后,警告消失了...

于 2018-02-10T06:25:49.660 回答