说说Redux的实现原理是什么?写出原理的核心代码?

提示:redux的实现原理以及核心代码



提示:以下是本篇文章正文内容

一、为什么要使用Redux?

原因:在React中,数据在组件中是单项绑定的,父组件向子组件传递数据可以通过props,但是兄弟组件之间传递数据就比较麻烦,redux就可以解决这个问题

二、redux的设计理念

redux是将整个应用的state存储在一个公共的store文件中,组件可以通过分发(dispatch)一个动作或者行为(action)给这个公用的store,而不是直接去通知其他组件,组件内部通过订阅store中的状态state来刷新自己的视图
redux工作流

三、Redux三大原则

1、唯一数据源
整个应用的数据存储在一个统一的状态树中,也就是我们说的公共的store文件。在组件都会从这个store中获取数据
2、保持只读状态
state状态是只读的,唯一改变state的方法就是触发action,action是一个用于描述发生时间的普通对象
3、数据改变只能通过纯函数来执行
使用纯函数来执行修改,为了描述action如何该百年state的,需要编写reducers

四、Redux原理详解

store
1、store就是保存数据的地方,可以将它看作一个数据,而且整个应用能有一个store
2、redux提供了createStore这个函数,用来生成store

import {createStore} from 'redux'
const store=createStore(fn);

state
1、state就是store中存储的数据,store里可以拥有多个state,Redux规定一个state对应一个View,只要state相同,view就是一样的,反过来也是一样的,可以通过store.getState()获取

import {createStore} from 'redux'
const store=createStore(fn);
const state=store.getState()

Action
1、action可以改变state,而且也是改变state的唯一方法

const action={
      type:'ADD_TODO', //action名称,必须存在
      payload:'redux'
}

dispatch
1、store.dispatch( )是view发出Action的唯一办法
2、在view中,用户触发一个行为或者简单理解点击某一个按钮,这时候如果需要修改state值,就需要触发action,而store.dispatch接收一个Action作为参数,将它发送给store通知store来改变state。

const action = {
        type:'ADD_TODO',
        payload:'redux'
    };
    store.dispatch(action);

reducer
1、Store收到Action以后,必须给出一个新的state,这样view才会发生变化。这种state的计算过程就叫做Reducer。
2、Reducer是一个纯函数,他接收Action和当前state作为参数,返回一个新的state。

const reducer =(state,action)=>{
      switch(action.type){
        case ADD_TODO:
            return newstate;
        default return state
      }
    }

总结

  1. 将应用的状态统一放到state中,由store来管理state
  2. reducer的作用是返回一个新的state去更新store中对用的state
  3. redux的原则,UI层每一次状态的改变都应通过action去触发,action传入对应的reducer 中,reducer返回一个新的state更新store中存放的state,这样就完成了一次状态的更新
  4. subscribe是为store订阅监听函数,这些订阅后的监听函数是在每一次dipatch发起后依次执行
  5. 可以添加中间件对提交的dispatch进行重写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值