- 34
- 0
我的想法是vue 的mixin也可以写成js自定义模块export,然后import进来
都是代码复用
但是我把mixn改成js模块,出现了一个大问题
vue.esm.js?efeb:1741 TypeError: Cannot read property 'components' of undefined
at checkComponents (vue.esm.js?efeb:1330)
at mergeOptions (vue.esm.js?efeb:1451)
at mergeOptions (vue.esm.js?efeb:1467)
at Function.Vue.extend (vue.esm.js?efeb:4803)
at createComponent (vue.esm.js?efeb:4203)
at _createElement (vue.esm.js?efeb:4420)
at createElement (vue.esm.js?efeb:4357)
at vm._c (vue.esm.js?efeb:4489)
at Proxy.render (eval at ./node_modules/vue-loader/lib/template-compiler/index.js?{"id":"data-v-0ffbc2a2","hasScoped":true,"transformToRequire":{"video":["src","poster"],"source":"src","img":"src","image":"xlink:href"},"buble":{"transforms":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/news/detail/comment/Item.vue (app.js:7208), <anonymous>:144:13)
at VueComponent.Vue._render (vue.esm.js?efeb:4544)
过程是我用js模块方法返回的结果作为组件显示与否v-if
//lib.js
let checkIsLogin= async function(){
const res = await api.auth.current({});
return res.isLoggedIn;
};
//componnts.vue
lib.checkIsLogin().then(function(res){
this.replying = res;
})
<child v-if="replying "></child> 0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
独孤柳 普通会员 1楼
在JavaScript中,自定义模块(Module)可以被视为一个对象,它包含一个名为
export的方法,以及一个名为export default的方法,这两个方法的目的是在模块被导入时,向其他模块或组件传递特定的值或配置。在Vue中,Mixin是一种设计模式,用于为组件定义基础样式、状态、行为或数据绑定,而模块则是用于包含多个自定义组件的集合。- 自定义模块(Module):
export:在JavaScript中,模块的export方法定义了模块如何被导入并使用。通过这种方式,模块可以在其他组件中导出一个或多个数据结构、函数或方法。模块的export方法通常包含以下参数:- 如果模块是单个对象或类,可以包含任意属性和方法,如:
javascript export default { name: 'MyModule', // properties // methods }; - 如果模块是数组,可以包含一个或多个对象,每个对象包含任意属性和方法,如:
javascript export default [ { name: 'MyModuleComponent', // properties // methods }, { name: 'MyOtherModuleComponent', // properties // methods }, ]; - 如果模块是类,可以包含一个或多个属性和方法,如:
javascript export default class MyModule { // properties // methods }; - 如果模块是对象,可以包含任意属性和方法,如:
javascript export default { // properties // methods }; -
如果模块包含子模块,可以使用
export子模块的export方法,而子模块本身可以包含自己的export方法。子模块的export方法定义在export default子模块中,子模块可以将模块的值或配置导出给其他模块,也可以使用import语句导入模块,导入模块时需要使用当前模块的import关键字。 -
Vue的Mixin:
- Vue的Mixin是一种设计模式,用于为组件定义基础样式、状态、行为或数据绑定,而不是创建一个独立的模块。Mixin通常包含以下属性:
data:用于存储组件的数据,例如:javascript export default { name: 'MyMixin', data() { return { // data properties }; }, };props:用于传递组件的状态或属性给其他组件,例如:javascript export default { name: 'MyMixin', props: { // props properties }, };methods:用于定义组件的生命周期方法,例如:javascript export default { name: 'MyMixin', methods: { // methods methods }, };computed:用于计算组件的属性值,例如:javascript export default { name: 'MyMixin', computed: { // computed computed properties }, };watch:用于监听组件的状态变化,例如:javascript export default { name: 'MyMixin', watch: { // watch watch properties }, };mixins:用于包含其他组件的Mixin,作为属性或方法注入到当前组件中,例如:javascript export default { name: 'MyMixin', mixins: [ // mixins mixins ], };interceptors:用于处理组件的状态和行为,例如:javascript export default { name: 'MyMixin', interceptors: [ // interceptors interceptors ], };computedOptions:用于在计算属性的值时,提供额外的选项,例如:javascript export default { name: 'MyMixin', computedOptions: { // computedOptions computed options }, };attributes:用于将组件的状态、属性或行为绑定到HTML元素,例如:javascript export default { name: 'MyMixin', attributes: { // attributes attributes }, };events:用于监听组件的状态和行为,例如:javascript export default { name: 'MyMixin', events: { // events events }, };mixins:用于包含其他组件的Mixin,作为属性或方法注入到当前组件中,例如:javascript export default { name: 'MyMixin', mixins: [ // mixins mixins ], };extend:用于创建一个新的Mixin,继承自其他Mixin,例如:javascript export default { name: 'MyMixin', extend: { // extend extend properties }, };mounted:用于在组件挂载时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', mounted() { // mounted mounted methods }, };updated:用于在组件状态发生变化时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', updated() { // updated updated methods }, };beforeDestroy:用于在组件即将销毁时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', beforeDestroy() { // beforeDestroy beforeDestroy methods }, };created:用于在组件创建时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', created() { // created created methods }, };methods:用于定义组件的生命周期方法,例如:javascript export default { name: 'MyMixin', methods: { // methods methods }, };render:用于渲染组件的模板或内容,例如:javascript export default { name: 'MyMixin', render: (h) => { // render render methods }, };filters:用于处理和过滤组件的模板内容,例如:javascript export default { name: 'MyMixin', filters: { // filters filters }, };computed:用于计算组件的模板内容,例如:javascript export default { name: 'MyMixin', computed: { // computed computed properties }, };props:用于传递组件的状态或属性给其他组件,例如:javascript export default { name: 'MyMixin', props: { // props props }, };events:用于监听组件的状态和行为,例如:javascript export default { name: 'MyMixin', events: { // events events }, };mixins:用于包含其他组件的Mixin,作为属性或方法注入到当前组件中,例如:javascript export default { name: 'MyMixin', mixins: [ // mixins mixins ], };extend:用于创建一个新的Mixin,继承自其他Mixin,例如:javascript export default { name: 'MyMixin', extend: { // extend extend properties }, };mounted:用于在组件挂载时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', mounted() { // mounted mounted methods }, };updated:用于在组件状态发生变化时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', updated() { // updated updated methods }, };beforeDestroy:用于在组件即将销毁时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', beforeDestroy() { // beforeDestroy beforeDestroy methods }, };created:用于在组件创建时执行的生命周期方法,例如:javascript export default { name: 'MyMixin', created() { // created created methods }, };methods:用于定义组件的生命周期方法,例如:javascript export default { name: 'MyMixin', methods: { // methods methods }, };render:用于渲染组件的模板或内容,例如:javascript export default { name: 'MyMixin', render: (h) => { // render render methods }, };filters:用于处理和过滤组件的模板内容,例如: ```javascript export
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
