Redux使用

1.安装Redux

        yarn add redux 或者 npm i redux

2.Redux有三个核心概念

        action(动作):描述要做的事情,相当于公司里面要做的事情,比如打扫卫生这个事等

        reducer(函数):更新状态,相当于公司的员工,负责执行的

        store(仓库):整合action和reducer,相当于公司的老板

        流程:老板(store)分配(dispatch)要做的事情(action)给员工(reducer),员工干完活把结果交给老板

 

 

 3.Redux核心概念action

        1.action:描述要做的事情,项目中每个功能都是action,比如(计算器加减,添加任务,删除任务,登录,退出).

        2.特点:只描述做什么,本质就是一个JS对象,必须有type属性,用于区分动作的类型,可以通过payload携带额外的数据

export const incremen = {
    type: 'INCREMENT',
    payload: 5,
}

export const decrement = {
    type: 'DECREMENT',
    payload: 5,
}

4.Redux核心概念action creator

        使用函数(actionCreator)去创建一个action

        好处:可以使用函数创建action,通过传参把不一样数据传递过去,我们把action的函数叫做actionCreator,代码更简洁,容易复用

        store/actions.js

export const increment = (payload) => ({
    type: 'INCREMENT',
    payload,
})

export const decrement = (payload) => ({
    type: 'DECREMENT',
    payload,
})

5.Redux核心概念reducer

        reducer:本质上是一个函数,作用是根据 action 来更新状态,有如下特点。

        函数签名为:(prevState, action) => newState

        接收上一次的状态和 action,根据 action 的类型执行对应的操作,最终返回新的状态。

        原则:不要在 reducer 函数内部直接修改 state。

store/reducers.js

export default function counter(state = 10, action) {
    // 处理各种各样的 action
    switch (action.type) {
        case 'INCREMENT':
            return state + action.payload
        case 'DECREMENT':
            return state - action.payload
        default:
            // 记得要有默认返回的处理
            return state
    }
}

 6.Redux核心概念 纯函数

        纯函数是函数式编程中的概念,对于纯函数来说,相同的输入总是得到相同的输出

  • 纯函数原则

    a,不得改写参数

    b,不能调用 Date.now() 或者 Math.random() 等不纯的方法,因为每次会得到不一样的结果

    c,不能使用全局变量

    d,没有副作用,副作用:AJAX 请求、操作本地数据、或者操作函数外部的变量等。

  • 好处:方便测试,性能优化。

  • 为什么说纯函数呢?因为 reducer 就必须是一个纯函数。

        7.Redux核心概念store

                 store:仓库,是 Redux 的核心,负责整合 action 和 reducer。

                使用:

                a,一个应用只有一个 store。

                b,创建:const store = createStore(reducer)

                c,获取数据:store.getState()

                d,更新数据:store.dispatch(action)。       

                其他 API

                a,订阅(监听)状态变化:const unSubscribe = store.subscribe(() => {}),注意要订阅,后续的更新才能被观测到。

                b,取消订阅状态变化:unSubscribe()

// store: 整个数据的仓库,负责关联 reducer 和 action,通过 store 对象可以给 reducer 分配 action
import { createStore } from 'redux'
import reducer from './reducers'
const store = createStore(reducer)
export default store

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值