Redux 管理React Native数据
现在让我们看看大致的流程:
- React 可以触发 Action,比如按钮点击按钮。
- Action 是对象,包含一个类型以及相关的数据,通过 Store 的
dispatch()函数发送到 Store。 - Store 接收 Action 的数据并将其连同当前的
state树(state树是包含所有state的一种特殊的数据结构,是一个单一的对象)发给 Reducer。 - Reducer 是一个多个函数的合成函数(当然一般都是),它接收一个之前的
state和一个 Action;并基于此 Action 将会产生的影响,返回一个新的state。一个 app 可以包含一个 Reducer,但大部分的 app 最后会包含多个,每个处理state中不同的部分,下文 会提到。 - Store 接收到新的
state,并替换当前的。 - 当
state变化时,Store 触发 事件。 - 任何 订阅了事件 的组件 从 Store 中提取新的
state。 - 组件使用新的
state进行更新。
简单起见,这个流程可用下图表示:

你可以看到数据随着一个很清晰的单项路径流动,没有重叠,没有反方向的数据流。这图也展示了 app 的每一部分可以多么清晰地分开:
- Store 只关心所只有的
state; - View 中的组件,只关心显示数据和触发 Action;
- Action 只关注
state中的某些数据发生变化了,并包含了这些数据; - Reducer 只关注旧的状态并将 Action 放入到
state中。
一切都是模块化的,非常优雅。当阅读这样的代码的时候,表意非常明显,很容易理解。
推荐网站:https://f8-app.liaohuqiu.net/tutorials/building-the-f8-app/data/
Redux 管理React Native数据的更多相关文章
- 使用Redux管理React数据流要点浅析
在图中,使用Redux管理React数据流的过程如图所示,Store作为唯一的state树,管理所有组件的state.组件所有的行为通过Actions来触发,然后Action更新Store中的stat ...
- 使用Redux管理你的React应用
因为redux和react的版本更新的比较频繁,博客园这里用的redux版本是1.0.1,如果你关心最新版本的使用技巧,欢迎来我的Github查看(https://github.com/matthew ...
- Redux管理你的React应用
使用Redux管理你的React应用 因为redux和react的版本更新的比较频繁,博客园这里用的redux版本是1.0.1,如果你关心最新版本的使用技巧,欢迎来我的Github查看(https ...
- React Native环境配置和简单使用
# 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...
- React Native之配置开发环境
安装前注意: 1)在Max OS X 10.11(El Capitan)版本中,homebrew在安装软件时可能会碰到/usr/local目录不可写的权限问题.可以使用下面的命令修复: sudo ch ...
- 配置React Native的开发环境
本文转载自:http://mp.weixin.qq.com/s?__biz=MzIxNjEzNjUzOQ==&mid=402020148&idx=2&sn=ccad14a919 ...
- 在 React Native 中使用 Redux 架构
前言 Redux 架构是 Flux 架构的一个变形,相对于 Flux,Redux 的复杂性相对较低,而且最为巧妙的是 React 应用可以看成由一个根组件连接着许多大大小小的组件的应用,Redux 也 ...
- React Native集成Redux框架讲解与应用
学过React Native的都知道,RN的UI是根据相应组件的state进行render的,而页面又是由大大小小的组件构成,导致每个组件都必须维护自身的一套状态,因此当页面复杂化的时候,管理stat ...
- react native 中的redux 理解
redux 中主要分为三大块,分别是Action Reducer 与Store. 1.Action是js的一个普通对象,是store数据的唯一来源.通过store.dispath()讲action传到 ...
随机推荐
- php获取字符串长度函数strlen和mb_strlen
php获取字符串长度函数strlen和mb_strlencount() - 计算数组中的单元数目,或对象中的属性个数strlen — 获取字符串长度,一个汉字为3个字符mb_strlen() - 获取 ...
- 13年总结js,css,java xml
--------------------------------------javaScript知识点----------------------------- jQuery对象[Object obj ...
- [转载]js 获取ASP RadioButtonList 选中的值
var planList=document.all ('rblPlanType'); for(var i=1;i<planList.length;i++) { if(plan ...
- linux 下面压缩、解压.rar文件
一,解压问题 在网上下东西的时候,经常会遇到.rar后缀的文件,我用tar解压,解压不出,上网找啊找,一直没找到什么合适的工具来压缩和解压.rar后缀的文件,现在我找到了. 二,rar和unrar安装 ...
- easyui dialog 表单提交,弹框初始化赋值,dialog实现
//定义弹框html<div id="delete" class="easyui-dialog" title="Delete" dat ...
- 【新架构测试】Fiddler转发数据测试
跨域转发设置: 首先进行设置, AutoResponder--> 选中Enable rules和Unmatched requests passthrough 然后Import...导入fiddl ...
- 注册页面的JSON响应方式详细分析(与前端页面交互方式之一)
控制器层 需求分析: 访问路径:`/user/reg.do` //自己根据功能需求设定的请求参数:`username=xx&password=xx&&phone=xx& ...
- Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'
在运行cmd黑窗口时候出现:Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'这样的错误的时候,本人没有删除任何文件,只是重新配置了一下jdk ...
- Python网络编程,粘包、分包问题的解决
tcp编程中的粘包.分包问题的解决: 参考:https://blog.csdn.net/yannanxiu/article/details/52096465 服务端: #!/bin/env pytho ...
- Spring Boot 2 (三):Spring Boot 2 相关开源软件
Spring Boot 2 (三):Spring Boot 2 相关开源软件 一.awesome-spring-boot Spring Boot 中文索引,这是一个专门收集 Spring Boot 相 ...