时有落花至,远随流水香。
useContext
- 在hooks之前,react开发者都是使用class组件进行开发,父子组件之间通过props传值。但是现在开始使用方法组件开发,没有constructor构造函数,也就没有了props的接收,所以父子组件的传值就成了一个问题。
- useContext可以看成是扩大版的 props,它可以将全局的数据通过 provider 接口传递 value 给局部的组件,让包围在 provider 中的局部组件可以获取到全局数据的读写接口。
useContext 作用
- useContext可以帮助我们跨越组件层级直接传递变量,实现数据共享。
- Context的作用就是对它所包含的组件树提供全局共享数据的一种技术。
useContext 用法
- 创建 context
- 设置 provider 并通过 value 接口传递 state
- 局部组件获取读写接口
useContext 使用
- 创建 Context ,设置 provider 并通过 value 接口传递 state 数据
1 | import React, { useRef, createContext, useState } from 'react'; |
- 局部组件从 value 接口中传递的数据对象中获取读写接口
1 | import React, { createContext, useContext, useState } from 'react'; |
useContext 案例(实现redux效果,多级数据传输,全局数据共享)
- 创建context.js,存储数据
1 | import React from "react" |
- 父级引用
1 | import React, { useCallback, useEffect, useMemo, useState } from 'react'; |
- 子级修改
1 | import React, { memo,createContext, useContext, useState } from "react"; |
- 孙子级引用
1 | import React,{useContext, useState} from "react"; |
- 当子组件调用添加number方法 ,父组件以及孙子组件的number 同时变化