React Context API

  使用React 开发程序的时候,组件中的数据共享是通过数据提升,变成父组件中的属性,然后再把属性向下传递给子组件来实现的。但当程序越来越复杂,需要共享的数据也越来越多,最后可能就把共享数据直接提升到最外层的组件,这时子组件再想获取到共享数据就有点麻烦了,有可能要向下传递好多层才能到达想要数据的子组件,但经过的这些层(也是组件)可能不需要这个数据,如果在这些组件中再写这些数据,有些冗余,再说,由于这些组件都不需要数据,有可能就忘记写了,程序就会出错,还不好调试。有没有一种方法,可以穿透组件,想要数据的子组件直接就能获取到共享数据, 这就是React context。

  Context就是上下文,环境的意思,React 的context 就是提供了一个上下文或环境,在这个环境中,有context提供者和context消费者,提供者(provider) 就是提供共享数据,消费者(consumer) 就是消费这些共享数据。那就先创那一个上下文context, 使用的createContext() 方法,创建成功后,假设是proContext, 那么这个proContext 就有两个属性proContext.provider, 和proContext.consumer, 它们是两个组件,分别就是提供者和消费者,提供者提供数据是通过组件的value属性实现的, 消费者消费数据是通过函数实现了, 消费者怎么获取到提供者提供的数据呢,都是组件吗?只要消费者是提供者的子组件,它就是能获取到数据,这也就避免了层层传递。

但如果仅仅是为了不想层层伟递数据,就使用context,那没有必要,那可以传递组件。在父组件中声明要传递的组件,直接把组件传递过去。经过的子组件以数据并没有感知。

猜你喜欢

转载自www.cnblogs.com/SamWeb/p/11370747.html