1.基本使用
import React,{useReducer}from 'react'// eslint-disable-next-line import/no-anonymous-default-exportexport default ()=>{  //创建一个reducerconst [count,dispatch]=useReducer((state,action)=>{switch (action) {    case 'add':    return state+1;    case 'sub':        return state>0?state-1:0    default:      return state}},0)return(    <>       <h1> 这个值是:{count}</h1>       <button onClick={()=>dispatch('add')}>点击加一</button>       <button onClick={()=>dispatch('sub')}>点击减一</button>    </>)}
2.案例
//修改颜色/Color.jsximport React,{createContext,useReducer}from 'react'export const ChangeColor=createContext({})export const UPDATECOLOR='UPDATECOLOR'const reducer=(state,action)=>{    switch (action.type) {        case UPDATECOLOR:          return action.color        default:            return state    }}// eslint-disable-next-line import/no-anonymous-default-exportexport const Colors= (props)=>{    const [color,dispatch]=useReducer(reducer,'blue')return(    <> <ChangeColor.Provider value={{color,dispatch}}> {   props.children} </ChangeColor.Provider>    </>)}
//content.jsximport React from 'react'import Buttons from './Buttons'import Txt from './Txt'import { Colors } from './Colors'// eslint-disable-next-line import/no-anonymous-default-exportexport default ()=>{return(    <>    {/* 需要使用color组件将其他俩个组件包裹,共享数据 */}    <Colors>    <Txt /><Buttons />    </Colors>    </>)}
//Txt.jsximport React,{useContext}from 'react'import { ChangeColor } from './Colors'// eslint-disable-next-line import/no-anonymous-default-exportexport default ()=>{    let {color}=useContext(ChangeColor)return(    <>    <h1 style={{color:color}}>这行文字的颜色是:{color}</h1>    </>)}
Buttons.jsx//将dispatch分发出去,在外部传入actionimport React,{useContext} from 'react'import {ChangeColor,UPDATECOLOR} from "./Colors"// eslint-disable-next-line import/no-anonymous-default-exportexport default ()=>{const {dispatch}=useContext(ChangeColor)return(    <>       <button style={{background:'#00ffff',color:'#fff'}} onClick={()=>dispatch({type:UPDATECOLOR,color:'red'})}>修改颜色是红色</button>       <button style={{background:'#00ff00',color:'#fff'}} onClick={()=>dispatch({type:UPDATECOLOR,color:'yellow'})}>修改颜色是黄色</button>    </>)}