【发布时间】:2019-01-25 16:05:15
【问题描述】:
每次 Provider 重新渲染时,下面的代码都会重新渲染所有消费者,因为总是为值创建一个新对象
所以我做了一个简单的例子来测试这个:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
value: {something: 'something'},
};
}
render() {
console.log('App');
return (
<>
<ThemeContext.Provider value={this.state.value}>
<ThemeContext.Consumer>
{(value)=>( <Toolbar test={value}/>)}
</ThemeContext.Consumer>
</ThemeContext.Provider>
<button onClick={this.handler}>click me</button>
</>
);
}
handler=()=>{
this.forceUpdate()
}
}
const app = <App />;
class Toolbar extends React.Component {
render() {
console.log('Toolbar');
return (
<div></div>
);
}
}
ReactDOM.render(app,mountNode);
似乎在每次点击中,即使引用相同,工具栏组件也会与提供程序一起重新呈现。那么这里有什么问题呢?
【问题讨论】:
标签: javascript reactjs