import { createContext } from 'react'
let defaultValue = {}
const context = createContext(defaultValue)
export default context;
2. 在父/祖组件中使用 Provider
组件包裹需要接收数据的子组件,并通过 value
属性提供要共享的数据
import { useContext } from 'react'
impor context from '@/xxx/xxx.ts'
return (
<context.Provider value={这里放需要传递的数据}>
需要接收数据的子/孙组件
这里的子/孙组件中,如果在嵌套子组件,仍然可以获取共享数据
</context.Provider>
3. 在需要获取公共数据的子/孙组件中,使用 useContext
方法、Context
对象,得到 value
的值
子/孙组件:
import React, { useContext } from 'react';
import context from '@/xxx/xxx'
const index = () => {
const contextParams = useContext(context)
return (
创建一个Context对象,当React渲染一个订阅了这个Context对象的组件,这个组件会从组件树中离自身最近的那个匹配的Provider中读取到当前的context值。只有当组件所处的树中没有匹配到Provider时,其才会生效。
一个整合多个reducer的useRedcuer的案例
1.redux-custom.tsx
import React, { Context, createContext, useContext, useReducer } from 'react';
* @createContext ProviderContext 一个创建完毕的context
const ProviderCon...
context.jsx
import React from 'react';
export const Mycontext=React.createContext();
A.jsx
import React ,{useContext} from "react";
import {Mycontext} from "./context.jsx";
function A() {
const count=useContext(Mycontext)
console.log(count);
useReducer-使用篇
useReducer-配合useContext使用
欢迎回到我们的useReducer系列第三篇,如果这是你第一次看到这个系列,推荐先看看前两篇:
上篇文章结尾提到过使用useReducer,可以帮助我们集中式的处理复杂的state管理。但如果我们的页面很复杂,拆分成了多层多个组件,我们如何在子组件触发这些state变化呢,比如在Lo...
(1)当组件上层最近的 <MyContext.Provider> 更新时,该 Hook 会触发重渲染,并使用最新传递给 MyContext provider 的 context value 值。
(2)即使祖先使用 React.memo 或 shouldComponentUpdate,也会在组件本身使用 useContext 时重新渲染。
(3)useContext(MyContext) 只是让你能够读取 context 的值以及订阅 context 的变化。你仍然需要在上层组件树中使用 &.
使用createContext进行跨组件间数据传递方法
首先需要在父组件中定义一个容器和需要传递的默认值,然后通过Provider(生产者,简单来说就是定义数据的东西),定义共享的数据,然后通过Consumer(消费者,就是子组件或孙子组件来使用),具体实现代码如下:
// 在父组件中定义
export const Context = React.createContext({ activeKey...
const Context = React.createContext();
//此时state 就是 count
function countReducer(state, action) {
switch (action.type) {
case "add":