Skip to content

4-Three Principles三大原则 ​

本节目标:理解“4-Three Principles三大原则”的核心思路,并能把它用于实际开发或面试表达。 Redux可以用三个fundamental基本 原则来描述:

一、真实的单一来源Single source of truth 整个应用程序的状态存储在单个存储中的object tree对象树中。 这使得创建universal通用应用程序变得很容易,因为您的服务器的状态可以被序列化并hydrated水合到客户机中,而不需要额外的编码工作。单个状态树还使调试或检查应用程序变得更容易;它还允许您在开发过程中持久化应用程序的状态,从而加快开发周期。一些传统上很难实现的功能——例如撤销/重做——如果您的所有状态都存储在一个树中,那么实现起来可能会突然变得很简单。

console.log(store.getState())
/* Prints{  visibilityFilter: 'SHOW_ALL',  todos: [    {      text: 'Consider using Redux',      completed: true,    },    {      text: 'Keep all state in a single tree',      completed: false    }  ]}*/

二、State is read-only 改变state状态的唯一emit方法是发出一个

action

动作,一个描述发生了什么的对象。 这确保views视图和network callbacks网络回调都不会直接写入状态。相反,它们表达了转换状态的意图。因为所有的更改都是集中的,并且按照严格的顺序一个接一个地发生,所以没有需要注意的细微竞争条件。由于操作只是普通对象,因此可以对其进行日志记录、序列化、存储,并在稍后重播,以进行调试或测试。

store.dispatch({  type: 'COMPLETE_TODO',  index: 1})
store.dispatch({  type: 'SET_VISIBILITY_FILTER',  filter: 'SHOW_COMPLETED'})

三、使用pure functions纯函数进行更改

Changes are made with
reducer

函数是纯粹的函数,它接受前一个状态和一个动作,然后返回下一个状态。记住要返回新的状态对象,而不是改变以前的状态。您可以从单个reducer程序开始,随着应用程序的增长,将其拆分为更小的reducer程序,以管理状态树的特定部分。因为reducer只是函数,所以可以控制调用它们的顺序、传递额外的数据,甚至为分页等常见任务创建可重用的reducer。

function visibilityFilter(state = 'SHOW_ALL', action) {  switch (action.type) {    case 'SET_VISIBILITY_FILTER':      return action.filter    default:      return state  }}
function todos(state = [], action) {  switch (action.type) {    case 'ADD_TODO':      return [        ...state,        {          text: action.text,          completed: false        }      ]    case 'COMPLETE_TODO':      return state.map((todo, index) => {        if (index === action.index) {          return Object.assign({}, todo, {            completed: true          })        }        return todo      })    default:      return state  }}
import { combineReducers, createStore } from 'redux'const reducer = combineReducers({ visibilityFilter, todos })const store = createStore(reducer)
That's it! Now you know what Redux is all about.

> 来自

 <https://redux.js.org/introduction/three-principles>

本站总访问 — 次