react native 中的redux
一、使用redux 的条件:
1、某个组件的状态,需要共享;
2、某个状态需要在任何地方都可以拿到;
3、一个组件需要改变全局状态;
4、一个组件需要改变另一个组件的状态。
redux 说明白点,其实就是一种机制,可以在同一个地方查询状态、改变状态、传播状态的变化。
二、redux 中的store
store 可以认为是一个保存数据的地方,可以看成一个容器。
通过createStore 来生成store;
通过store.getState() 拿到数据;
三、redux 中Action
View 通过Action 来改变state,它会运送数据到store。Action 是一个对象,其中type 属性是必须的,表示Action的名称。
四、redux 中的dispatch()
store.dispatch ()是View 发出Action 的唯一方法。
五、reducer
store 收到Action 以后,必须给出一个新的state,这样View 才会发生变化。这种state的计算过程就叫做reducer。
reducer 是一个纯函数,它接受Action 和当前state作为参数,返回一个新的state。
const reducer = function (state, action) {
// ...
return new_state;
};
实际中的运用:
import { createStore } from 'redux';
const store = createStore(reducer);
上面代码中,createStore 接受Reducer 作为参数,生成一个新的Store。以后每当store.dispatch 发送过来一个新的Action,就会自动调用reducer,得到新的state。
六、reducer 纯函数
纯函数的一个特性就是:只要是同样的输入,必定得到同样的输出。
纯函数是函数式编程的概念,必须遵守以下的一些约束:
1、不得改写参数;
2、不能调用系统I/O的API;
3、不能调用Date.now 或者Math.random ()等不纯的方法,因为每次会得到不一样的结果
reducer 函数里面不能改变state,必须返回一个全新的对象。
react native 中的redux的更多相关文章
- 在 React Native 中使用 Redux 架构
前言 Redux 架构是 Flux 架构的一个变形,相对于 Flux,Redux 的复杂性相对较低,而且最为巧妙的是 React 应用可以看成由一个根组件连接着许多大大小小的组件的应用,Redux 也 ...
- react native 中的redux 理解
redux 中主要分为三大块,分别是Action Reducer 与Store. 1.Action是js的一个普通对象,是store数据的唯一来源.通过store.dispath()讲action传到 ...
- React Native 中使用Redux
参考https://jspang.com/detailed?id=48和印度同事的代码简单整理一下在RN中使用Redux的步骤 1. 首先我们应该先了解Redux是什么,什么情况下需要用到它 在Red ...
- React Native 中 CSS 的使用
首先声明,此文原作者为黎 跃春 React Native中CSS 内联样式 对象样式 使用Stylesheet.Create 样式拼接 导出样式对象 下面的代码是index.ios.js中的代码: / ...
- react native中的欢迎页(解决首加载白屏)
参照网页: http://blog.csdn.net/fengyuzhengfan/article/details/52712829 首先是在原生中写一些方法,然后通过react native中js去 ...
- React Native中的网络请求fetch和简单封装
React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810 ...
- [转] 「指尖上的魔法」 - 谈谈 React Native 中的手势
http://gold.xitu.io/entry/55fa202960b28497519db23f React-Native是一款由Facebook开发并开源的框架,主要卖点是使用JavaScrip ...
- [转] 在React Native中使用ART
http://bbs.reactnative.cn/topic/306/%E5%9C%A8react-native%E4%B8%AD%E4%BD%BF%E7%94%A8art 前半个月捣腾了一下Rea ...
- 如何在非 React 项目中使用 Redux
本文作者:胡子大哈 原文链接:https://scriptoj.com/topic/178/如何在非-react-项目中使用-redux 转载请注明出处,保留原文链接和作者信息. 目录 1.前言 2. ...
随机推荐
- leetcode 319 灯泡问题
例子:1-9 1的因子1 2 1,2 3 1,,3 4 1,2,4 5 1,5 6 1,2,3,6 7 1,7 8 ...
- cf287E Main Sequence
As you know, Vova has recently become a new shaman in the city of Ultima Thule. So, he has received ...
- JConsole手册
一篇Sun官方网站上介绍JConsole使用的文章,前段时间性能测试的时候大概翻译了一下以便学习,今天整理一下发上来,有些地方也不知道怎么翻,就保留了原文,可能还好理解点,呵呵,水平有限,翻的不好,大 ...
- mysql/oracle 连接参数中文变问号
jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8&useSSL=true
- POJ1861 Network
Time Limit: 1000MS Memory Limit: 30000KB 64bit IO Format: %lld & %llu Description Andrew is ...
- Redis数据结构之跳跃表
跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的. 一.跳跃表结构定义1. 跳跃表节点结构定义: 2. 跳跃表结构定义: 示例: 二.跳跃表节点中各种 ...
- 初学Android,BroadcastReceiver之发送接收广播
BroadcastReceiver用于监听系统全局广播消息,由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统中不同组件之间通信 启动它需要两步 1.创建需要启动的 ...
- a href="javascript:void(0)"
JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. void 操作符用法格式如下: 1. javascript:void (expression) 2. javas ...
- PAT (Advanced Level) 1087. All Roads Lead to Rome (30)
暴力DFS. #include<cstdio> #include<cstring> #include<cmath> #include<vector> # ...
- .NET Core 3.0之创建基于Consul的Configuration扩展组件
写在前面 经过前面三篇关于.NET Core Configuration的文章之后,本篇文章主要讨论如何扩展一个Configuration组件出来.如果前面三篇文章没有看到,可以点击如下地址访问 .N ...