老莫的笔记本  
  
查看: 356|回复: 1

React context 内置的一套传递数据的方法

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2022-4-28 10:12:08 | 显示全部楼层 |阅读模式
本帖最后由 周大胖子 于 2022-4-28 11:01 编辑

context的局限性:
虽然可以实现跨组件通讯,但是通过context 只能实现从上往下传递,不能实现从下往上传递或者同级之间传递

  1.    
  2. import React from "react";




  3. // 1.创建一个上下文对象
  4. const AppContext2 = React.createContext({
  5.     name:'林志玲',
  6.     age:45
  7. });

  8. // 2.从上下文对象中获取容器组件
  9. // Provider: 生产容器组件
  10. // Consumer: 消费者容器组件
  11. // 容器组件:专门用于包裹其他组件的组件

  12. const { Provider, Consumer } = AppContext2;
  13. class RightDiv extends React.Component {
  14.     constructor() {
  15.         super();

  16.     }
  17.     render() {
  18.         return (
  19.             <section>
  20.                 <p>演员2:{this.context.name}</p>
  21.                 <p>年龄2:{this.context.age}</p>
  22.             </section>
  23.         )
  24.     }

  25. }
  26. // 通过静态方法  来消费 数据  如果有多个生产者 不能用这种模式
  27. RightDiv.contextType = AppContext2;

  28. class LeftDiv extends React.Component {
  29.     constructor() {
  30.         super();
  31.     }

  32.     render() {
  33.         return (
  34.             <section>
  35.                 这是父组件
  36.                 <br />
  37.                 <RightDiv></RightDiv>
  38.             </section>

  39.         )
  40.     }


  41. }



  42. class ContextTemp extends React.Component {

  43.     constructor() {
  44.         super();
  45.     }

  46.     render() {
  47.         return (

  48.             <section>
  49.                 这是爷爷辈的组件
  50.                 <LeftDiv></LeftDiv>
  51.             </section>
  52.         )
  53.     }


  54. }

  55. export default ContextTemp;
复制代码



上面是简写:其实我觉得用的地方不会很多

回复

使用道具 举报

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
 楼主| 发表于 2022-5-9 16:03:08 | 显示全部楼层
补充一个组件传递方法的简写,  在 <Consumer> 中,如果有类 且传递数据较多 可以使用 <Home  {...value}> 的写法 </Consumer>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表