4.Redux

作者: 米古月_f198 | 来源:发表于2021-03-05 17:07 被阅读0次
    image.png

    Store:一个库,保存数据的地方,整个项目只有一个
    创建store: Redux提供 creatStore 函数来生成 Store

    // 引入redux
    import { createStore } from 'redux';  
    
    //创建Store 需要传递一个函数fn 这里的fn是之后会提及的reducers
    const store = createStore(fn);
    

    State:状态,某时刻的数据即是Store的状态
    获取状态的方法是store.getState()

    Action:行为,它有一个不可或缺的type属性
    action还可以携带其他内容
    我们可以使用action来改变State的值,
    从而将我们需要的数据通过Action“运输”到 Store;

    dispatch:发送action
    dispatch(action)接受一个action对象为参数,并将它发送出去,
    Store接受Action,接受之后需要返回一个新的State(状态)

    Reducer:处理器    
    dispatch(action)接受一个action对象为参数,并将它发送出去,
    Store接受Action,接受之后需要返回一个新的State(状态)
    而创建这个新的状态的过程就是reducer

    1.isPlainObject
    代码:

    /**
     * @param {any} obj The object to inspect.
     * @returns {boolean} True if the argument appears to be a plain object.
     */
    export default function isPlainObject(obj) {
      if (typeof obj !== 'object' || obj === null) return false
    
      let proto = obj
      while (Object.getPrototypeOf(proto) !== null) {
        proto = Object.getPrototypeOf(proto)
      }
    
      return Object.getPrototypeOf(obj) === proto
    }
    // 注意:typeof null 的返回值为 "object". 所以只使用 typeof obj !== 'object' 不能将 null 值排除掉. 
    // 因此应使用 typeof obj !== 'object' || obj === null 进行判断.
    

    再往下就是通过原型链判断了.
    通过 while 不断地判断 Object.getPrototypeOf(proto) !== null 并执行,
    最终 proto 会指向 Object.prototype. 这时再判断 Object.getPrototypeOf(obj) === proto,
    如果为 true 的话就代表 obj 是通过字面量或调用 new Object() 所创建的对象了.
    Object.getPrototypeOf() 方法用于获取一个对象的原型属性指向的是哪个对象.

    普通对象isPlainObject结果:


    image.png

    非普通对象isPlainObject结果:


    image.png

    普通对象proto 一定是指向 Object.prototype 的,如下:

    image.png

    非普通对象, 例如 f, 其 proto 是指向其构造函数的 prototype 属性,f的proto 如下:

    image.png
    构造函数Fun()的prototype如下:
    image.png

    proto 和 prototype
    https://blog.csdn.net/cc18868876837/article/details/81211729

    https://www.cnblogs.com/yangyangxxb/p/10047648.html

    相关文章

      网友评论

          本文标题:4.Redux

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