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传到 ...
随机推荐
- linux java -version 和 javac -version 不一致
我是在6 的基础上又装了一个 8. 结果java -v 和 javac -v的 一个显示 6 一个显示8 解决方式: 再次source 一下配置文件 如: source ~/.bashrc 或者 ...
- JDBC-day02
JDBC:数据库连接 java database connectivity ###properties 属性对象,用于读取*.properties属性配置文件中的数据 -为什么使用:之前写法是把数 ...
- 在CentOS 6.3中安装与配置cmake
安装说明安装环境:CentOS-6.3安装方式:源码编译安装软件:cmake-2.8.10.2.tar.gz下载地址:http://www.cmake.org/cmake/resources/soft ...
- C#——WebApi 接口参数传参详解
本篇打算通过get.post.put.delete四种请求方式分别谈谈基础类型(包括int/string/datetime等).实体.数组等类型的参数如何传递. 一.get请求 对于取数据,我们使用最 ...
- PHP结合Vue实现上拉分页
效果图: <?php if(isset($_GET['data'])){ $data = [ [ 'title'=>1], [ 'title'=>2], [ 'title'=> ...
- svg动态添加小人
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- win7 下安装使用 nginx 出现500错误
配置虚拟主机域名后访问网站出现500错误,发现是因为路径的反斜杠问题,改成正斜杠后问题解决.
- 20165310 《Java程序设计》课程总结
20165310 <Java程序设计>课程总结 一.每周作业及实验报告博客链接汇总 预备作业一:我期望的师生关系 20165310 我期望的师生关系 预备作业二:学习基础和C语言基础调查 ...
- js的原型prototype究竟是什么?
Javascript也是面向对象的语言,但它是一种基于原型Prototype的语言,而不是基于类的语言.在Javascript中,类和对象看起来没有太多的区别. 1.什么是prototype: fun ...
- Linux电源管理_autosleep--(五)【转】
本文转载自:https://blog.csdn.net/wlsfling/article/details/46005409 1. 前言 Autosleep也是从Android wakelocks补丁集 ...