Vue:prop函数的默认值

use*_*867 5 javascript vue.js vuejs2

有什么方法可以为带有功能类型的道具设置默认功能?

props: {
    clickFunction: {
        type: 'Function'
        default: ????
    }
}
Run Code Online (Sandbox Code Playgroud)

nee*_*mzy 16

我会说,始终提供与您指定的类型匹配的默认值:使事情更容易推理。在这里,您要寻找的是一个 noop 函数(也就是什么都不做的函数):

props: {
  clickFunction: {
    type: Function
    default: () => {}
  }
}
Run Code Online (Sandbox Code Playgroud)

然后this.clickFunction(),您可以在代码中使用,而无需首先进行防御性检查:它始终是一个函数。确保您不会与Objectprop的默认值混淆,这将是一个空对象:

props: {
  someObject: {
    type: Object
    default: () => ({})
  }
}
Run Code Online (Sandbox Code Playgroud)

在Vue公司,ObjectArray道具必须将其默认值函数的返回,以确保它们是不同的组件的每个实例(这似乎并不需要为Function道具,但实际上文档不清澈的这个)。


tha*_*ksd 11

是:

Vue.component('foo', {
  template: '<div>{{ num }}</div>',
  props: {
    func: {
      type: Function,
      default: () => 1,
    },
  },
  data() {
    return { 
      num: this.func()
    }
  }
})

new Vue({
  el: '#app',
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <foo></foo>
</div>
Run Code Online (Sandbox Code Playgroud)