Vuejs компонент отсутствует вычисляемое свойство - PullRequest
0 голосов
/ 22 марта 2020

Наша команда создала плагин, который добавляет миксин beforeCreate. Этот миксин добавляет вычисляемое свойство к экземпляру компонента. Он отлично работает в одном проекте, но в другом проекте this.$options.computed не определено. Оба работают на 2.6.11, и компонент на самом деле является еще одним плагином для tempate, так что это точно такой же код компонента. Я не могу понять, почему computed будет определено в одном проекте, но не в другом или для любого экземпляра vue.

function plugin (Vue, options = {}) {
  Vue.mixin({
    beforeCreate () {
    ...
    this.$options.computed[computedName] = computedFns(name)
    // above line throws cannot set value to undefined
    ...
}

function computedFns (name) {
  return {
    get () {
      return this[name] === undefined ? this.$data[DATA_PREFIX + name] : this[name]
    },
    set (value) {
      if (this[name] === undefined) {
        this.$data[DATA_PREFIX + name] = value
      }
      this.$emit(`update:${name}`, value)
    }
  }
}

Для ударов и хихиканья я перечислил все свойства this.$options, как указано в mixin, и, конечно же, вычисленное отсутствует при использовании во втором проекте:

::::: parent
::::: _parentVnode
::::: propsData
::::: _parentListeners
::::: _renderChildren
::::: _componentTag
::::: components
::::: directives
::::: filters
::::: _base
::::: beforeCreate
::::: destroyed
::::: props
::::: data
::::: watch
::::: mounted
::::: methods
::::: render
::::: staticRenderFns
::::: _compiled
::::: _scopeId
::::: _ssrRegister
::::: __file
::::: name
::::: _Ctor

Но оно есть в первом проекте:

::::: parent
::::: _parentVnode
::::: propsData
::::: _parentListeners
::::: _renderChildren
::::: _componentTag
::::: components
::::: directives
::::: filters
::::: _base
::::: beforeCreate
::::: destroyed
::::: data
::::: computed
::::: created
::::: props
::::: watch
::::: mounted
::::: methods
::::: render
::::: staticRenderFns
::::: _compiled
::::: _scopeId
::::: _ssrRegister
::::: __file
::::: name
::::: _Ctor 
...