美文网首页
Redux中间件(一):redux的使用

Redux中间件(一):redux的使用

作者: Viewwei | 来源:发表于2021-01-06 10:26 被阅读0次
  • Redux Redux是基于Reducer来实现
  • Reducer 来自数组(Array)中的reduce 例如数据相加
let array = [1,2,3,4]
let result = array.reduce((total,element)=>{
    return total +=element
})
console.log(result); //10

数组中可以是基本数据,也可以是函数,函数实例如下

let f1 =(x) =>{console.log("f1L:"+x);return x}
let f2 =(x) =>{console.log("f2L:"+x);return x}
let f3 =(x) =>{console.log("f3L:"+x);return x}
let array = [f1,f2,f3]
let result = array.reduce((a,b) =>{
    return (...args) =>{
        a(b(...args))
    }
})
result(1) 
f3L:1
f2L:1
f1L:1
大约等于 f1(f2(f3(1)))
  • Redux 使用如下
  1. 安装redux
yarn add redux //安装redux
  1. 创建reducer函数,并且创建store
import {createStore, applyMiddleware, combineReducers} from "redux";
function countReducer(state=0,action) {
    switch(action.type){
        case "ADD":
            return state+=1
        case "MINUS":
            return state -=1
        default:
            return state
    }
}
const store = createStore(countReducer)
export default store
  1. 使用redux,使用redux,首先先导入store,通过store的getState函数获取state,通过订阅来更新组件,
  • 注意:订阅完成之后,在组件unmount之后需要取消订阅。实例代码如下
import React, { useCallback, useEffect, useState } from 'react';
import store from '../redux/index' //setp1 引入
let Redux = () =>{

    const[count,setCount] = useState(store.getState()) //store.getState() 获取state的值
    useEffect(()=>{
       let sub =  store.subscribe(() =>{
            //订阅更新
            setCount(store.getState())
        })
        return ()=>{
        //组件unmount之后需要取消订阅
            sub.unsubscribe()
        }
    },[])
    const add = () =>{
        store.dispatch({type:"ADD"})
    }
    const minix =() =>{
        store.dispatch({type:"MINUS"})
    }
    const delayed = ()=>{
        store.dispatch((dispath,getState)=>{
            setTimeout(() => {
                dispath({type:"ADD"})     
            }, 1000);
        })
    }
    return <div>
        <h3>ReduxPage</h3>
        <p>{count}</p>
        <button onClick={e=>add()}>增加</button>
        <button onClick={e=>minix()}>减少</button>
        <button onClick={e=>delayed()}>延时增加</button>

    </div>
}
export default Redux

成功实例:点击添加可以正常使用


image.png

相关文章

  • Day17. Redux深入

    如何使用redux-thunk 中间件的使用, redux-thunk redux-devtools redux开...

  • redux

    使用步骤 redux只处理同步 redux处理异步请求中间件· 在引入redux的时候引入applyMiddlew...

  • react 面试

    react redux (所有数据都放入redux管理) 1、redux中间件原理(middleware) 中间件...

  • redux-thunk

    redux-thunk 是一款redux中间件 工作流程 目前是先处理异步在派发动作 使用 redux-thunk...

  • 中间件redux-thunk使用过程

    使用redux-thunk创建加强版store的过程图: redux提供了使用中间件的方法:applyMiddle...

  • Attempted import error: 'takeEve

    如题,在 React 项目中使用 redux-saga 中间件时,发现 takeEvery 在 redux-sag...

  • redux搭配中间件实现状态管理

    在Vue中可以使用vuex,在react可以使用dva(基于redux-saga实现)或者使用redux搭配中间件...

  • redux-thunk入门

    今天来介绍在使用redux中必不可少用要用到的中间件redux-thunk。如果还没有看过我之前关于redux介绍...

  • Redux-saga

    Redux-saga 概述 redux-saga是一个用于管理redux应用异步操作的中间件,redux-saga...

  • redux-saga的render优化

    当我们使用redux-saga(redux中间件)时,数据更新流程是,dispatch带上action,交给red...

网友评论

      本文标题:Redux中间件(一):redux的使用

      本文链接:https://www.haomeiwen.com/subject/rvbwoktx.html