Estoy en el proceso de convertir un proyecto de API de opciones de Vue 2 a API de composición de Vue 3. En un componente api de opciones, tengo una variable llamada componentData , y desde este componente estoy llamando a un mixin. Cuando llamo al mixin, puedo acceder a todas las variables del componente desde el interior del mixin, aquí hay un ejemplo:
//myMixin.js export default { methods: { data_changed() { //where componentData is declared in the component console.log(this.componentData) this.componentData = [1, 2, 3] }, data() { return { someVar: null } } }Tengo muchos problemas para hacer lo mismo con la API de composición. En lugar de mixins, tengo componibles, así que digamos que tengo un componente donde declaro una variable:
import { ref } from 'vue' import { testData } from '../mixins/useData.js' export default { setup() { const componentData = ref([]) testData() } }Y mi useData.js componible:
export function testData() { console.log(componentData.value) //undefined componentData.value = [1, 2, 3] //will throw error } En este caso, el componible devolverá undefined . ¿Cómo puedo acceder a los datos del componente sin pasarlos como parámetros de función? ¿Es porque en Vue3 se supone que los componibles solo devuelven un valor y no funcionan igual que los mixins? ¿Es posible cambiar el valor de componentData del componible?
Podrías pasar la ref como argumento a testData() :
// useData.js export function testData(componentData) { componentData.value = [1, 2, 3] ✅ } // MyComponent.vue import { ref } from 'vue' import { testData } from '../mixins/useData.js' export default { setup() { const componentData = ref([]) 👇 testData(componentData) } }