在vue 3中创建vue组件[已关闭]

wi3ka0sx  于 2023-03-13  发布在  Vue.js
关注(0)|答案(1)|浏览(151)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

昨天关门了。
Improve this question
使用之前版本的Vue I在main.js中创建组件,如下所示:

Vue.component('my1', {
    props: ['opt', 'id', 'value'],
    template: `<input :id="opt.id" :type="type" :value="value" />`,
    mounted: function () {
        var self = this;
        var el = $(this.$el);       

        el.on('myload', function () {
            self.$emit('myload');            
        });
    },
    updated: function () {
            ...
    },
    computed: {
            type: 'abc'
        }
    }
});

在vue3中,这不再起作用了,所以我尝试使用.vue文件来代替组件。但是我在文档中找不到组件声明的每一部分的等价物。
目前我只有propstemplate

<script setup>
    defineProps({
        id: { type: String },
        opt: { type: Object }, 
        value: { type: Object }
     })
</script>

<template>  
    <input :id="id" :type="type" :value="value" />
</template>

.vue 3组件中,我应该将计算、更新和装载的放在哪里?

zzlelutf

zzlelutf1#

Vue 3的语法几乎相同,但有一些小的差异,在Vue 3中,组件可以使用createApp创建的根示例而不是全局对象Vue进行全局注册,对于计算属性,它们应定义为computed选项内的函数,并且还应根据其他值返回一些值,而不仅仅是原始价值

import { createApp } from 'vue'

const app = createApp({
  /* root component options */
})

app.component('my1', {
    props: ['opt', 'id', 'value'],
    template: `<input :id="opt.id" :type="type" :value="value" />`,
    mounted: function () {
        var self = this;
        var el = $(this.$el);       

        el.on('myload', function () {
            self.$emit('myload');            
        });
    },
    updated: function () {
            ...
    },
    computed: {
           type(){
               return ...
           }
        }
    }
});

相关问题