以往的是这么玩的:

  1. import React from 'react'
  2. const ctx = React.createContext();
  3. function Test(){
  4. return <ctx.Consumer>
  5. {value=><h1>Test,上下文的值: {value}</h1>}
  6. </ctx.Consumer>
  7. }
  8. export default function App() {
  9. return (
  10. <div>
  11. <ctx.Provider value="wjw">
  12. <Test />
  13. </ctx.Provider>
  14. </div>
  15. )
  16. }

但是react认为,这样多了两个元素—Context.Provider, Context.Consumer, 增加了层次结构,比较麻烦
要尽量保证组件结构的洁净,因此衍生出了useContext

useContext

用于获取上下文的—>>组件间的数据传递
现在是这样的代码:

  1. import React,{ useContext } from 'react';
  2. const ctx = React.createContext();//Context对象
  3. function Test(){
  4. const value = useContext(ctx);
  5. return <h1>Test,上下文的值: {value}</h1>
  6. }
  7. export default function App() {
  8. return (
  9. <div>
  10. <ctx.Provider value="wjw">
  11. <Test />
  12. </ctx.Provider>
  13. </div>
  14. )
  15. }

这样就减少了一个Context.Consumer,而且可以随时获取其他上下文的值