Api композиции Vue - передать переменную в параметр data () моего компонента?

Если я установил переменную в настройке

 setup(props, context) {
    
        let name = "Tommy";
    }

Можно ли установить это так, чтобы его можно было использовать в компоненте?

data() {
    return {
      myName: name
    }
  },

Я могу получить к нему доступ в шаблоне, но не в любом из методов компонента. Даже если я засуну это в крючок onMounted.

setup(props, context) {
  
    onMounted(() => {
    let name = "Tommy";
    }
}

person AlexanderDavidson    schedule 08.12.2020    source источник


Ответы (3)


Параметр api ведет себя иначе, чем api композиции, и обмен свойствами / методами между двумя api является плохой практикой, в вашем случае вы можете определить свойство в хуке настройки и предоставить его шаблону:

import {ref} from 'vue'

 setup(props, context) {
      const name = ref("Tommy");
      
  return{
    myName:name
   }

}
person Boussadjra Brahim    schedule 08.12.2020

Его можно использовать в компоненте и даже в опции data:

data() {
    return {
      myname: this.name
    }
}

Хотя myname не будет реагировать на изменения в name

person Dan    schedule 08.12.2020

Также помните, что если вы хотите изменить значение своей переменной в методе setup, если переменная была инициализирована как ссылка, вы должны явно получить доступ к члену .value

import {ref} from 'vue'

 setup(props, context) {
      const name = ref("Tommy");
      const fullName = name.value + " Hanks"
      
  return{
    myName:name,
    fullName
   }

}

В шаблоне вам не нужно обращаться к значению ссылки, возвращаемой методом setup. Вы просто используете элемент ref, поскольку доступ к .value осуществляется неявно в шаблоне.

person ejara    schedule 07.07.2021