zoukankan      html  css  js  c++  java
  • userReducer Hook

    userReducer Hook

    我们会问它是干嘛的?解决的是状态共享?

     Reducer : 二个参数(state,action) 一个返回值 return值。

    先来上个例子:

    import React, { useReducer } from 'react';
    
    function Counter() {
      const [sum, dispatch] = useReducer((state, action) => {
        return state + action;
      }, 0);
    
      return (
        <>
          {sum}
    
          <button onClick={() => dispatch(1)}>
            Add 1
          </button>
        </>
      );
    }

    我们先来理解下:

    1)数组中有二个参数:sum及dispath, 对应用的是useReducer,这个里面接收二个值,一个是箭头函数Reducer,一个是默认值。

    sum对应state,dispath对应action

    2)这里的sum的默认值是0,也就是第二个参数,当我们dispatch(1)的时候,自动会计算state+action,一开始是0+1=1,然后是1+1=2

    这样sum的值也是2,显示出来也是2。

    state可以是任何值,它不一定是一个对象,可以是一个数字,一个数组,或者其他任何类型。

    再来一个例子:

    import React, { useReducer } from 'react';
    
    function ReducerDemo(){
    
        const [count, dispatch] = useReducer((state, action)=>{
            switch(action){
                case 'add':
                    return state+1
                case 'sub':
                    if(state<=1){
                        return 0;
                    }
                    return state-1
                default:
                    return state
            }
        },0)
            
                
        return(
            <div className="Example-left10">
                <h2>现在的分数是{count}</h2>
                <button onClick={()=>{dispatch('add')}} className="Example-left10">Add 1</button>
                <button onClick={()=>{dispatch('sub')}} className="Example-left10">Dec 1</button>
            </div>
        )
    }
    
    export default ReducerDemo

    以上的例子都是我改造于网络,感谢各位小伙伴。

    参考:

    https://segmentfault.com/a/1190000020088192

  • 相关阅读:
    C#概述
    作为一个程序员小小感悟!!
    c# 合并两个DataTable
    C# FastReport .NET打印
    c# System.Net.Sockets =》TcpListener用法
    开博第一章
    Vue 报错 Uncaught (in promise)
    ASP.NET MVC 中的过滤器
    SpringBoot 打包成war
    SprintBoot 实现上传下载
  • 原文地址:https://www.cnblogs.com/jiduoduo/p/14190810.html
Copyright © 2011-2022 走看看