美文网首页
说说Redux(一)

说说Redux(一)

作者: HancockTong | 来源:发表于2018-01-20 19:36 被阅读0次

    Redux 是 JavaScript 状态容器,提供可预测化的状态管理。可以让你构建一致化的应用,运行于不同的环境(客户端、服务器、原生应用),并且易于测试。不仅于此,它还提供超爽的开发体验,比如有一个时间旅行调试器可以编辑后实时预览。

    所以什么是Redex呢?

    简单来说,Redux是一个“中心数据库”,我们可以把应用中的各种状态与数据存放在Redux中,并且可以通过Redux提供的方法对数据库中的数据进行更新,更新数据之后,通过诸如React-Redux这样的工具来将数据的更新同步到UI上。

    image

    Redux包含三个组件:Store、Action和Reducer。

    Store

    Store就像是一个“数据库”,在Redux中只有一个Store,所有的数据以的树形存储在Store中。

    Action

    1. Action用于描述更新数据的“行为”,每一个Action都是一个普通的js对象;

    2. 这个对象必须带有一个名为type的字段(type的值一般是一个大写形式的唯一的字符串)用于表示当前的行为类型;

    3. 还可以带有其它字段用来更新Store(一般我们将额外的数据统一放到名为payload的字段中)。

    const action = {
     
       type: 'LOAD_USER_INFO',
    
       payload: {
     
         userId: 10000  }
     
     };
    

    Reducer

    Reducer是一个普通的javascript方法,这个方法接收两个参数:state和action。
    其中state表示Store或者Store的一部分,action就是上面提到的一个对象。
    每当有一个Action被触发,所有的Reducer方法都将被执行。
    在Reducer方法中,如果接收到的Action是这个Reducer所期望的type,那么就可以根据state和action来生成并返回一个新的state,否则就直接返回state
    这就是Redux更新state的逻辑:action -> reducer -> new state
    我们需要给Reducer的第一个参数state设置一个初始值,这个初始值最终会变成Store或Store中一个子树的初始值
    一般Reducer方法中都会有一个switch,通过switch来根据接收到的action.type来执行不同的更新操作,例如:

    
    function count(state = 0, action){ 
    switch (action.type) {
    
        // 当接收到type为'INCREASE'的时候,我们将state加1    
    case 'INCREASE': return state + 1;
    
        // 当接收到type为'DECREASE'的时候,我们将state减1   
    case 'DECREASE': return state - 1;
    
        // 其它的type直接返回原state    
    default: return state;
    
      }
    
    }
    
    

    相关文章

      网友评论

          本文标题:说说Redux(一)

          本文链接:https://www.haomeiwen.com/subject/uontaxtx.html