Redux 简介

一、Redux是什么?

       Redux的核心代码可以理解为一个库,同时强调与Flux类似的架构思想。它提供若干个API让我们去调用store,并能够去更新store中的最新状态。 

“React应用”是指使用了redux这个npm包并结合了视图层实现(例 React),及其他前端应用必备的组件,(路由库,Ajax请求库)组成的完整的类Flux思想的前端应用。

二、Redux 三个原则。

    1、单一数据源:

       在Redux的思想里,一个应用永远只有一个数据源。使用单一数据源的好处在于、整个应用状态都保存在一个对象中,这样我们随时可以提取出整个应用的状态进行持久化。缺点在于,强制使用单一数据源会产生一个特别庞大的Javascript对象。

   不用担心,Redux提供的工具函数combineReducers来拆分、整合多个数据源。

2、状态是只读的:

     在Redux中我们没有store, 不会用代码自己去定义一个store,我们定义一个reducer,它的功能就是根据当前触发的action对当前应用的状态(state)进行迭代,这里我们并没有直接修改state,而是返回了一份全新的state。

3、状态修改均由纯函数完成:

   在Redux中,我们通过定义reducer来确定状态的修改,而每一个reducer都是纯函数,这意味着它没有副作用,即接受一个一定的输入,必定会有一定的输出。Redux 利用每次新返回的状态生成酷炫的时间旅行(time travel)调用方式,让跟踪每一次因为发生action而改变状态的结果成为了可能。

三、Redux 核心API

   Redux的核心就是一个store,这个store由 Redux提供的createStore(reducers,[ , initialState])方法生成。从函数签名可以看出,要想生成store,必须传入reducers,同时也可以传入第二个可选参数初始化状态(initialStore)。

   在Redux里,负责响应action的就是reducer,reducer的本质就是一个纯函数,其函数签名为 reducer(previousState,action)=>newState.可以看出,reducer是根据旧的state和action计算出newState。

  下面是Redux中最核心的几个API:

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

1、getState():  获取store中当前的状态。

2、dispatch(action): 分发一个action,这里唯一能够改变store中数据的方式。

3、subsribue(listener) : 注册一个监听者,它在store发生变化时起作用。

4、replaceReducer(nextReducer): 更新当前store里的reducer,一般只会在开发模式中调用该方法。

最常用的是 getStore()和 dispatch()这两个方法。

四、与React绑定:

    react-redux库是对 react与redux绑定的一个库,这样是为了保证核心功能做到最大程度的跨平台复用。

react-redux提供了一个组件和一个API帮助React与Redux进行绑定,一个是React组件 <Provider/>,一个是conect()。关于它们,只需要知道 <Provider/>接受一个store作为props,它是整个应用的顶层组件,而 connect()提供了在整个React应用的任意组件中获取store中数据的功能。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值