账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Vue3 用 rollup 打包组件后 组件 setup 中的 onMounted 不生效
    40
    0
    我用 rollup 打包了一个 vue3 组件,组件代码:// main.vue<template> <div> <div @click="clickDiv">{{ 1 }}</div> <div ref="divRef"></div> </div></template><script>import { onMounted, ref, defineComponent } from 'vue'export default defineComponent({ name: 'Vue3Component', mounted () { console.log('component mounted') // it works well }, setup() { const divRef = ref() const clickDiv = () => { console.log('divRef', divRef) // it causes some warnings } onMounted(() => { console.log('component onMounted') // it causes some warnings }) return { a: ref(1), clickDiv, divRef } },})</script>入口文件:// index.jsimport Vue3Component from './main.vue'Vue3Component.install = (app) => { app.component(Vue3Component.name, Vue3Component)}export { Vue3Component}rollup 配置文件:// rollup.config.jsimport resolve from '@rollup/plugin-node-resolve'import commonjs from '@rollup/plugin-commonjs'import pkg from './package.json'import external from 'rollup-plugin-peer-deps-external'import vuePlugin from 'rollup-plugin-vue'const extensions = ['.vue', '.js']const globals = { vue: 'Vue', 'highlight.js': 'hljs', 'marked': 'marked'}export default [ { input: 'src/index.js', output: [ { name: 'VueNextMEditor', file: pkg.main, format: 'umd', globals }, { file: pkg.module, format: 'es' }, { name: 'VueNextMEditor', file: pkg.unpkg, format: 'umd', plugins: [terser()], globals } ], plugins: [ external(), vuePlugin(), resolve(), commonjs({ extensions }) ] }]当我在组件根目录下用 vue-cli 生成了一个 example 项目调试这个组件时,我发现 setup 中的 onMounted 方法没有生效,产生了如下警告:[Vue warn]: onMounted is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.ref 也产生了警告:[Vue warn]: Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function. at <Vue3Component> at <App>但是 setup 外面的 mounted 函数是可以正常执行的,就很奇怪。不知道是我打包出现了问题还是组件引用产生了问题。项目完整地址:项目地址
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部