反应上下文-Context.Consumer与Class.contextType

sga*_*dev 4 reactjs react-context

我正在学习一些新近引入的React.Context API,但是我注意到各个示例在使用它方面存在一些不一致之处。一些使用原始的Context.Consumer HOC方法,而某些(包括React Docs)使用静态的Class.contextType方法。有什么区别?为什么不一致?

sga*_*dev 6

事实证明,静态Class.contextType在React v16.6.0上新引入的,因为Context.Consumer方法在类组件上被证明是有问题的。而且,两者之间似乎确实有一个主要区别,那就是静态的Class.Context仅允许您订阅单个上下文。

好消息是,它们似乎都可以可靠地监听Co​​ntext的变化,这意味着,如果您只有一个Context API,那么两者都足够好。