keyMirror的使用心得

在react项目开发中,reducer相关的hooks(useDispatch、useStore、useSelector)在大量状态管理以及回调data的存取是极为方便的,尤其是useState逐渐的被取代的情况下。
reducer如此多的状态存取,包括type类型。所以引入 KeyMirror 既能保证代码前后的功能一致,也能享受压缩带来的性能提升。
但并不是为了省字符,而是在 Closure Compiler 的高级模式下,Object 的 key 会被压缩替换成更短的字符,这样就不能创建一个 key 跟 value 相等的 Object 了。keyMirror 就是解决这个问题的。

// 代码
var obj = {
    ASDF_GHJK_KLOI: null,
    QWE_RTT_YUU: null,
    QW_WE_RT_VB: null
};
var newObj = keyMirror(obj);
console.log(newObj.ASDF_GHJK_KLOI);

// 编译后
var a = keyMirror({ a: null, c: null, b: null });
console.log(a.a);

KeyMirror顾名思义,其功能就是让 Key,Value相等。
以下是keymirror的源码

var keyMirror = function(obj) {
  var ret = {};
  var key;
  if (!(obj instanceof Object && !Array.isArray(obj))) {
    throw new Error('keyMirror(...): Argument must be an object.');
  }
  for (key in obj) {
    if (!obj.hasOwnProperty(key)) {
      continue;
    }
    ret[key] = key;
  }
  return ret;
};

可以看出返回的是一个{a: a, b: b}的对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值