vue源码记录

92 阅读1分钟

1.setup函数与setyp语法糖语何区别 为何不需要return

二者在经过编译后产物不一样

setup函数为
const _sfc_main = {
  components: {
    HelloWorld
  },
  setup() {
    const msg = ref("fsg");
  }
};
setup与法糖为
const _sfc_main = /* @__PURE__ */ _defineComponent({
  __name: "App",
  setup(__props, { expose: __expose }) {
    __expose();
    const msg = ref("ss");
    const __returned__ = { msg, HelloWorld };
    Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
    return __returned__;
  }
});

后续代码中在执行render函数之前的renderComponentRoot里一个函数结构出setupState 例如

function renderComponentRoot(){
     const {
   ...,
    setupState,
    ...,
  } = instance;
}

直接传入render函数内部 所以语法糖无需return