redux简单使用
为什么要写这个文档呢,因为我看官方文档各种看不懂啊,琢磨了半天都不理解,最后是去看了源码才看明白 学习redux需要知道redux的三个部分:
actionredux中得action就是你自己定义的一个动作,什么是动作?你可以理解为用户的动作你做出的反应,最简单地例子就是当你进行分页的时候, /* * action types */ export const ADD_TODO = 'ADD_TODO'; export const COMPLETE_TODO = 'COMPLETE_TODO'; export const SET_VISIBILITY_FILTER = 'SET_VISIBILITY_FILTER'; /* * other constants */ export const VisibilityFilters = { SHOW_ALL: 'SHOW_ALL',SHOW_COMPLETED: 'SHOW_COMPLETED',SHOW_ACTIVE: 'SHOW_ACTIVE' }; /* * action creators */ export function addTodo(text) { return { type: ADD_TODO,text }; } export function completeTodo(index) { return { type: COMPLETE_TODO,index }; } export function setVisibilityFilter(filter) { return { type: SET_VISIBILITY_FILTER,filter }; } 在这里定义action之后用来出发的,通过
reducer这是在redux里面提出来的概念,具体啥含义请参考官网,因为我也解释不清楚╮(╯▽╰)╭ reducer在这里是核心,因为redux是只有一个store的,所以整个app的状态和数据都存储在一个store里面, import { combineReducers } from 'redux'; import { ADD_TODO,COMPLETE_TODO,SET_VISIBILITY_FILTER,VisibilityFilters } from './actions'; const { SHOW_ALL } = VisibilityFilters; 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.slice(0,action.index),Object.assign({},state[action.index],{ completed: true }),...state.slice(action.index + 1) ]; default: return state; } } const todoApp = combineReducers({ visibilityFilter,todos }); export default todoApp; 如你所见,reducer只是一个方法,在reducer里面根据传入的action里面的type进行不同的state地操作。 在这里我们唯一用到redux的功能只有 storestore的作用即是整合所有的reducer,然后提供一些帮助方法,例如 let store = createStore(reducer); 是的,就是这么简单。 如何跟react一起使用请参考文档 理解如何理解redux的重点就在于,redux如何处理整个数据流的走向。 component --dispatch(action)--> reducer --update(state)--> store --update(props)--> component 这就是整个数据的走向 看到这里,你们肯定跟我有相同的想法:reducer到底是个什么东西! 那么我们就来理解一下 我们看一下reducer的定义: function todos(state = [],...state.slice(action.index + 1) ]; default: return state; } } 首先他接受两个参数,一个是state,一个是action。 action我们知道是在dispatch的时候传入的告诉我们进行什么操作的,那么state是什么? **每次触发一个action的时候,store调用reducer,同时传入本身保存着的state,reducer根据传入的state和action返回新的state, 以上是redux的最基础使用,这也是redux的核心,然后后面还有一堆redux的扩展以及中间件进行学习,这仅仅是一个开始,以后还有更长的路要走^_^ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ArcGIS Server 开发指南:基于Flex和.NET(3)——
- Djang开发 - 重建app中的表
- c – 我应该保留随机分布对象实例还是可以总是重
- 如何在iOS中创建可重用的代码?
- ruby – OpenSSL :: SSL :: SSLContext SNI serv
- ruby-on-rails – Rails迁移错误
- configure: error: xml2-config not found. Plea
- ruby-on-rails – 从capistrano部署创建docker容
- 关于Flex传递ByteArray的问题
- ajax发送PUT请求,使用HttpPutFormContentFilter