【问题标题】:Function in Mixins Vuejs not found未找到 Mixins Vuejs 中的函数
【发布时间】:2019-03-02 10:57:59
【问题描述】:

您好,我有一个组件:

<template>
 <upload-btn 
   color="black" 
   title="Carica foto" 
   :fileChangedCallback="fileChange" />
</template>
<script>
import  fileUploadMixin from './../mixins/fileUploadMixin';
export default {
  name: 'compoment',
  mixins: [fileUploadMixin],
  components:{
    'upload-btn': UploadButton
  },
  data(){..},
  methods: {
    fileChange(file){
      this.fileChanged(file);
    }
   }
</script>

然后是我的 Mixin:

export default {
  data () {

  },
  methods: {
    fileChanged(file){
      if(file){
        this.itemImage = file;
        this.previewImage = URL.createObjectURL(file);
      }
    }
  }
}

问题是它返回这个错误,就像没有包含 mixins,但实际上是导入的。

vue.runtime.esm.js?2b0e:1878 TypeError: this.fileChanged is not a 功能

我也尝试过更改我的 mixin:

methods: {
    fileChanged: function(file){}
}

但它不起作用。

我怎么了?

【问题讨论】:

  • Syntactc 似乎正确,我的疑问是在 import 声明中。你能确定它是否在解决 mixin 吗?
  • 实际上是的,我正在使用 vue-cli-serve,如果没有解决 mixin,它会在编译时返回错误。我尝试更改 mixin 的扩展名,我放了 .vue 并且放 .js 似乎返回不同的错误!
  • 是的,问题是我的课程扩展名错了。谢谢你

标签: vuejs2 mixins


【解决方案1】:

对于其他开发者。

我已经解决了。

问题是我的 Mixins 文件扩展名错误。

我已经放了 Mixin.vue 而不是 Mixin.js,谢谢大家的回答。

【讨论】:

    【解决方案2】:

    尝试从 mixin 中删除数据块,或从中返回一个空对象。

    【讨论】:

    • 这不是必需的。据我了解,这些数据块是合并的
    【解决方案3】:

    应该计算 Mixin:

    export default {
        data () {},
        computed: {
             fileChanged(file){
                  if(file){
                       this.itemImage = file;
                       this.previewImage  = URL.createObjectURL(file);
                  }
              }
          }
     }
    

    【讨论】:

    • 返回此错误:属性或方法“fileChanged”未在实例上定义,但在渲染期间被引用。确保此属性是反应性的
    猜你喜欢
    • 2019-05-30
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多