Функция не распознается новым Vue Composition API - PullRequest
0 голосов
/ 07 мая 2020

Мы пытаемся преобразовать простой SF C для использования нового Vue CompositionAPI. Этот код работает безупречно:

export default {
  data() {
    return {
      miniState: true
    }
  },
  methods: {
    setMiniState(state) {
      if (this.$q.screen.width > 1023) {
        this.miniState = false;
      } else if (state !== void 0) {
        this.miniState = state === true
      }
      else {
        this.miniState = true
      }
    },
  },
  watch: {
    '$q.screen.width'() {
      this.setMiniState()
    }
  }
};

Преобразование этого в новый CompostionAPI выглядит так:

export default defineComponent({
  setup() {
    const miniState = ref(true)

    const setMiniState = (state) => {
      if ($q.screen.width > 1023) {
        miniState.value = false
      } else if (state !== void 0) {
        miniState.value = state === true
      }
      else {
        miniState.value = true
      }
    }

    watch('$q.screen.width'(),
      setMiniState()
    )

    return {
      miniState, setMiniState
    }
  }
})

Однако каждый раз, когда я пытаюсь запустить это, Vue жалуется, что $q.screen.width это не функция. Что я здесь делаю не так?

1 Ответ

2 голосов
/ 07 мая 2020

Вы вызываете $q.screen.width вместо добавления его в качестве источника наблюдения.

Попробуйте следующее:

watch('$q.screen.width', (newVal, oldVal) => setMiniState())
...