zoukankan      html  css  js  c++  java
  • 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;
    };

    实际中的运用:

    1
    2
    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,必须返回一个全新的对象。

  • 相关阅读:
    201805140815_《缓存操作函数封装》
    201802071223_《更换两个二进制》
    201801301359——《注意Javascript这种形式》
    201708310807_《算法-Javascript实现最大公约数》
    重拾java openjdk1.8 语法小试
    代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码
    docker1.12 安装pxc(Percona XtraDB Cluster )测试
    .net orm比较之dapper和Entity Framework6的简单测试比较
    StackExchange.Redis使用和封装小试
    docker1.12 安装redis3官方集群 攻略
  • 原文地址:https://www.cnblogs.com/zk666/p/6840890.html
Copyright © 2011-2022 走看看