#104·mini-vue

reactivity/baseHandler.ts createGetter中的优化点

Author: sdutwslCreated Jun 9, 2023Updated Jun 9, 2023
typescript
const isExistInReactiveMap = () =>
      key === ReactiveFlags.RAW && receiver === reactiveMap.get(target);

const isExistInReadonlyMap = () =>
      key === ReactiveFlags.RAW && receiver === readonlyMap.get(target);

const isExistInShallowReadonlyMap = () =>
      key === ReactiveFlags.RAW && receiver === shallowReadonlyMap.get(target);

这三个常量写为函数对象似乎并没有什么实质性作用,vue3现在的代码已经实现为:

typescript
      (key === ReactiveFlags.RAW &&
      receiver ===
        (isReadonly
          ? shallow
            ? shallowReadonlyMap
            : readonlyMap
          : shallow
          ? shallowReactiveMap
          : reactiveMap
        ).get(target))

也许可以优化下。