React Hooks - useReducer和useContext实现组件之间的数据共享

Ⅰ- 壹 - 简介

  • useReducer 这个 Hooks 在使用上几乎跟 Redux/React-Redux 一模一样,唯一缺少的就是无法使用 redux 提供的中间件。
  • useContext 是 React 帮你封装好的,用来处理多层级传递数据的方式

两种结合使用可以实现 Redux/React-Redux 跨组件之间的数据共享

Ⅱ - 贰 - 使用

App.jsx:父组件

import React, { useReducer,createContext}from 'react'
import { defaultState, reducer } from './reducer' //

import Dome from './Dome';

//可以抽离出去
export const Ctx=createContext()
export default function App(props) {

  const [state, dispatch] = useReducer(reducer, defaultState)

  return (

    <>
      {state.conuste}
      <button onClick={() => dispatch({ ...state,type: "SET_ISSHOW", conuste: state.conuste+1 })}>点就完了</button>
      <h1>其他组件</h1>
      <Ctx.Provider value={{state,dispatch}}>
        <Dome></Dome>
      </Ctx.Provider>
    
    </>
  )
}

reducer.js: 共享的数据


const defaultState = {

  conuste: 0
}

const reducer = (state = defaultState, action) => {
  console.log(action);
  switch (action.type) {
    case 'SET_ISSHOW':
      console.log(state);
      return {
        ...state,
        conuste: action.conuste
      }

    default:
      return state
  }
}

export {
  defaultState, reducer
}

Dome.jsx:其他组件共享数据

import React, { useReducer,useContext}from 'react'
import { Ctx} from './useReducer'


export default function Dome() {


  const { state: { conuste}} = useContext(Ctx)

  return (

    <>
      <h1>{conuste}</h1>

    </>
  )
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值