为什么它不这样工作:
class AppProvider extends React.Component {
state = {};
render (){
<React.Provider value={this.state}>{this.props.children}</React.Provider>
}
}
...
class AppConsumer extends React.Component {
state = {};
render (){
<div>
<h1><React.Consumer>{context => context.toString()}</React.Consumer></h1>
<div>{this.props.children}</div>
</div>
}
}
...
<AppProvider>
<AppConsumer>
<AppConsumer>
</AppConsumer>
</AppConsumer>
</AppConsumer>
<AppConsumer>
<AppConsumer>
</AppConsumer>
</AppProvider>
我能想到的具有工厂功能的唯一用途是声明defaultValue
,供消费者使用-用于测试,如文档所述。
让我感到困惑的一点是,您可以使用完全相同的上下文,但是在不同位置使用两个具有不同值的提供程序,因此它实际上不是一个共享上下文...