我准备了这份文档来了解 Redux。希望这能消除您的疑虑。
-------------- REDUX教程------ ---
行动-
操作是将数据从应用程序发送到存储的信息负载。它们是商店信息的唯一来源。你可以寄给他们
仅使用 store.dispatch()。
Example-
const ADD_TODO = 'ADD_TODO'
{
type:ADD_TODO,
text: 'Build my first redux app'
}
Actions 是普通的 javascript 对象。 Action 必须有一个 [ type ] 属性来指示正在执行的操作的类型。类型应定义为字符串常量。
动作创作者-----
---------------- ---- 动作创建者正是创建动作的函数
很容易混淆这些术语 - 动作和动作创建者。
在 redux action 中,creator 返回一个 action。
function addToDo(text) {
return {
type: ADD_TODO,
text
}
}
初始化调度将结果传递给 dispatch() 函数。
- dispatch(addToDo(text));
- dispatch(completeToDo(index))
或者,您可以创建一个自动调度的绑定动作创建器。
cosnt boundAddTodO = text => dispatch(addToDo(text));
现在可以直接调用了
boundaddTodO(text);
dispatch() 函数可以直接从 store.dispatch() 访问。但我们
使用辅助 connect() 方法访问它。
Actions.js.......
动作............
exports cosnt ADD_TODO = 'ADD_TODO';
exports cosnt TOGGLE_TODO = 'TOGGLE_TODO'
动作创作者
导出函数 addToDO(text){
返回 {
类型:ADD_TODO,
文本
}
}
…………………………………………………………………………………………………………………………………………减速机......
Reducer 指定应用程序状态如何更改以响应发送到存储的操作。
设计状态形状
在 redux 中,所有应用程序状态都存储在单个对象中。您必须存储一些数据以及一些状态。
{
可见性过滤器:'SHOW_ALL',
待办事项:[
{
text: '考虑使用 redux',
完成:真
},
{
text: '将所有状态保留在单个树中'
}
]
}
处理操作
---------------- reducer 是纯粹的函数,它接受之前的状态和动作,并返回一个新的状态。
(previousState, action) => 新状态
我们将从指定初始状态开始。 Redux 将第一次以未定义的状态调用我们的 reducer。这是我们返回应用程序状态的机会。
import { visiblilityFilters } from './actions';
const initialState = {
visibilityFilter: VisibilityFilters.SHOW_ALL,
todo: []
}
function todoApp(state, action){
if(typeof state == 'undefined'){
return initialState;
}
// dont handle other cases as of now.
return state;
}
你也可以使用 ES6 的方式来处理 JS
function todoApp(state = initialState, action) {
switch (action.type) {
case SET_VISIBILITY_FILTER:
return Object.assign({}, state, {
visibilityFilter: action.filter
})
default:
return state
}
}
....................... 存储...... ......................
商店是将它们聚集在一起的对象。店铺有以下责任
- 保持应用程序状态
- 允许通过 getState() 访问状态
- 允许通过 dispatch() 更新状态
- 通过suscriber(listener)注册listeneres
注意。使用 combineReducers() 将多个 reducer 合并为一个。
const store = createStore(todoapp); // todoapp 是减速器