redux

redux 是一个应用数据流框架,主要是解决了组件间状态共享的问题,原理是集中式管理,主要有三个核心方法,action,store,reducer

三大原则:1、唯一数据源(整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中)2、reducer 必须是纯函数(输入必须对应着唯一的输出) 3、State 是只读的, 想要更改必须经过派发 actionredux 的工作流程:

使用通过 reducer 创建出来的 Store 发起一个 Action,

reducer 会执行相应的更新 state 的方法,

当 state 更新之后,view 会根据state 做出相应的变化

1、提供 getState()获取到 state

2、通过 dispatch(action)发起 action 更新 state

3、通过 subscribe()注册监听器

1、用户操作视图

2、发起一次 dispatch。有异步:返回一个函数(使用 thunk 中间件),没有异步:return {}

3、进入 reducer,通过对应的 type 去修改 state,最后返回一个新的 state

redux 中间件原理

 redux 的中间件就是对 store 的 dispatch 做了个升级,升级之后 dispatch 就可以对象和函数都可以接收,

这个时候当调用dispatch 方法给dispatch 方法传递的参数是一个对象的话,那么dispatch就会把这个对象直接传递给 store,跟之前我们写 dispatch 传递给它一个对象没什么区别,

但是如果传递给 dispatch 方法是一个函数的话,这个时候 dispatch 已经升级了,它就不会把这个函数直接传递给 store,它会先让这个函数执行,执行完了之后需要调用 store 的时候再去调用 store。

所以 dispatch 在这里会根据参数的不同执行不同的事情

redux 有什么缺点

一个组件所需要的数据,必须由父组件传过来,而不能像 flux 中直接从 store 取;

当一个组件相关数据更新时,即使父组件不需要用到这个组件,父组件还是会重新 render,可能会有效率影响,或者需要写复杂的 shouldComponentUpdate 进行判断

解释 Reducer 的作用

Reducers 是纯函数,它规定应用程序的状态怎样因响应 ACTION 而改变。

Reducers 通过接受先前的状态和 action 来工作,然后它返回一个新的状态。

它根据操作的类型确定需要执行哪种更新,然后返回新的值。如果不需要完成任务,它会返回原来的状态

Store 在 Redux 中的意义是什么?

Store 是一个 JavaScript 对象,它可以保存程序的状态,并提供一些方法来访问状态、调度操作和注册侦听器。

应用程序的整个状态/对象树保存在单一存储中。

因此,Redux 非常简单且是可预测的。我们可以将中间件传递到 store 处理数据,并记录改变存储状态的各种操作。所有操作都通过 reducer 返回一个新状态

列出 Redux 的组件

Action – 这是一个用来描述发生了什么事情的对象

Reducer – 这是一个确定状态将如何变化的地方

Store – 整个程序的状态/对象树保存在 Store 中

View – 只显示 Store 提供的数据

posted @ 2024-05-10 17:21  青橙娃娃  阅读(8)  评论(0编辑  收藏  举报