zoukankan      html  css  js  c++  java
  • useReducer 和 useContext 类似readux

    import React, { useReducer } from 'react'
    import './App.css'
    import ComponentA from './components/ComponentA'
    import ComponentB from './components/ComponentB'
    import ComponentC from './components/ComponentC'
    const initialState = 0
    const reducer = (state, action) => {
        switch (action) {
            case 'increment':
                return state + 1
            case 'decrement':
                return state - 1
            case 'reset':
                return initialState
            default:
                return state
        }
    }
    
    export const CountContext = React.createContext()
    
    function App() {
        const [count, dispatch] = useReducer(reducer, initialState)
        return (
            <CountContext.Provider
                value={{ countState: count, countDispatch: dispatch }}
            >
                <div className="App">
                    {count}
                    <ComponentA />
                    <ComponentB />
                                    <ComponentC />
                </div>
            </CountContext.Provider>
        )
    }
    
    export default App    
    
    
    import React, {useContext} from 'react'
    import { CountContext } from '../App';
    //组件A
    function ComponentA() {
      const countContext = useContext(CountContext)
      return (
        <div>
          Component A {countContext.countState}
          <button onClick={() => countContext.countDispatch('increment')}>Increment</button>
                <button onClick={() => countContext.countDispatch('decrement')}>Decrement</button>
                <button onClick={() => countContext.countDispatch('reset')}>Reset</button>
        </div>
      )
    }
    
    export default ComponentA
    //组件B
    import React, {useContext} from 'react'
    import { CountContext } from '../App';
    
    function ComponentB() {
      const countContext = useContext(CountContext)
      return (
        <div>
          Component F {countContext.countState}
          <button onClick={() => countContext.countDispatch('increment')}>Increment</button>
                <button onClick={() => countContext.countDispatch('decrement')}>Decrement</button>
                <button onClick={() => countContext.countDispatch('reset')}>Reset</button>
        </div>
      )
    }
    
    export default ComponentB
    
    import React, {useContext} from 'react'
    import { CountContext } from '../App';
    //组件C  其他依此类推
    function ComponentC() {
      const countContext = useContext(CountContext)
      return (
        <div>
          Component F {countContext.countState}
          <button onClick={() => countContext.countDispatch('increment')}>Increment</button>
                <button onClick={() => countContext.countDispatch('decrement')}>Decrement</button>
                <button onClick={() => countContext.countDispatch('reset')}>Reset</button>
        </div>
      )
    }
    
    export default ComponentC
         
  • 相关阅读:
    c#随便写写 数据层和表现层,队列执行
    unity代码设置鼠标样式
    Unity c#反射查找类中符合条件的方法并执行
    封装你的协程Unity TaskManager
    基于steamworks获取steam用户头像
    开启Unity项目中VS工程的属性面板
    移动端的动态阴影
    c#静态扩展方法,字典的克隆扩展方法
    Unity热更方案汇总
    lua输入函数名字符串执行函数
  • 原文地址:https://www.cnblogs.com/chenzxl/p/13224943.html
Copyright © 2011-2022 走看看