在下面的代码中,_updateQID方法是由另一个组件发出事件'Questions.updateHeader'时触发的。当发出事件并触发_updateQID时,我在控制台中得到以下警告:
警告:forceUpdate(...):在现有状态期间无法更新 转换(例如在
render
或其他组件内 构造函数)。渲染方法应该是道具的纯函数 州;构造函数的副作用是反模式,但可以移动 到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
请帮忙
答案 0 :(得分:2)
好的,我们解决了......我们触发事件强制更新Headers组件来自另一个组件的render方法....将它放入componentDidUpdate而不是渲染警告已经消失......