请问各位大神setState方法一定会重新渲染组件么

#1
 render() {
        return (
            <div style={{padding: '0 24px', minHeight: 870}}>
                <div style={{
                    border: 'solid black 1px',
                    height: '800px',
                    width: '800px',
                    left: '400px',
                    position: 'relative'
                }}>
                    <canvas id={'myCanvas'} style={{
                        border: 'solid black 1px',
                        background: '#ffffff'
                    }} onClick={this.onClick}
                    />
                </div>
            </div>
        )
    }

我在组件是这样 但是setState后 属性变了 canvas并没有重新渲染

#2

onClick里怎么写的?

#4

非常感谢您的回答!!! 已经解决了 是我没弄懂生命周期函数 渲染写进componentDidMount这个方法里面了 我改到componentWillUpdate()里就一切正常了!!

#5

:yum: 不一定渲染啊, 还有 shouldComponentUpdate 这个生命周期呢

#6
  1. 默认是会渲染的,因为shouldComponentUpdate默认返回true
  2. 如果在setState的回调函数中调用forceUpdate则也一定会渲染,因为它会让渲染过程强制完成
  3. 在既没有调用forceUpdate又shouldComponentUpdate函数返回false的情况,才不会渲染