useReducer代替Redux

创建state.js

import React, { createContext,useContext,useReducer } from 'react';

export const countText = createContext({})
export const updateCount = 'updateCount'
const reducer = (state,avtion) => {
  switch (avtion.type) {
    case 'updateCount':
      return avtion.count;
    default:
      return state
  }
}
export const Count = (props) => {
  const [count,dispatch] = useReducer(reducer,0)
  console.log(count,dispatch)
    return (
      <countText.Provider value={{count,dispatch}}>
        {props.children}
      </countText.Provider>
    )
}

  index.js

import React, { useContext,useReducer } from 'react';
import {countText,updateCount} from './state'

function Clicks () {
  console.log(useContext(countText))
  const {dispatch,count} = useContext(countText)
  // console.log(dispatch)
  return (
    <div>
        <h2>点击{useContext(countText).count}</h2>
        <button onClick={() => {dispatch({type:updateCount,count:count+1})}}>点击</button>
    </div>
  )
}
export default Clicks

  index2.js

import React, { useState,useContext,createContext } from 'react';
import {countText} from './state'

// const a =createContext(context)
function Index () {
  // console.log(children)
  return <div>{useContext(countText).count}</div>
}
export default Index

  

原文地址:https://www.cnblogs.com/js-liqian/p/11864885.html