Tengo accesorios en el componente secundario -> kpi_kalite[]
Componente padre->montado():
*(Este kpi_kalite se crea en los datos del componente principal)
axios.get(URL+ "/KPI/").then(response=>{ console.log(JSON.parse(JSON.stringify(response.data))) this.kpi_kalite.push(response.data[0]) })Hago 'obtener solicitud' en el componente principal y presiono la respuesta.datos a kpi_kalite[] (componente principal)
Y uso esta matriz para accesorios.
Luego, quiero hacer console.log(this.kpi_kalite) antes de montar o montar. Pero esto se apoya en no usar.
methods : { set_input(){ console.log(this.kpi_kalite) for(const i in this.kpi_kalite){ console.log(i) console.log(JSON.parse(JSON.stringify(this.kpi_kalite))) // output // "undefined" } } }, beforeMount() { this.set_input() }salida de la consola: indefinido
¿Usted me podría ayudar? ,Antes de cargar HTML-css, necesito los datos del componente principal en el componente secundario
Hay una publicación de LinusBorg sobre el orden de los enlaces de ciclo de vida para padres e hijos:
No hay nada extraño o incorrecto al respecto, todo se deriva lógicamente del ciclo de vida.
- beforeCreate() y created() del padre se ejecutan primero.
- Luego, se representa la plantilla principal, lo que significa que se crean los componentes secundarios.
- así que ahora los ganchos beforeCreate() y created() de los niños se ejecutan respectivamente.
- estos componentes secundarios se montan en elementos DOM, lo que llama a sus ganchos beforeMount () y montados ()
- y solo entonces, después de que la plantilla del padre haya terminado, se puede montar el padre en el DOM, por lo que finalmente se llama a los ganchos beforeMount () y montado () del padre.
FINAL
Además, hay un buen diagrama aquí .
Los componentes secundarios se montan antes de que se monte el componente principal. Por lo tanto, console.log(this.kpi_kalite) en el componente secundario no imprime los datos obtenidos de axios en el componente principal. Por lo tanto, si no renderiza el componente secundario al principio, no se montará porque no se crea. Si renderiza el componente secundario después de completar axios, se creará y montará. Luego, console.log imprimirá el valor de kpi_kalite obtenido de axios en el padre.
Componente principal :
<ChildComponent v-if="renderChildComponent" :kpi_kalite="kpi_kalite" />
data() { return { kpi_kalite: [], renderChildComponent: false, }; }, mounted() { axios.get(URL+ "/KPI/").then(response=>{ console.log(JSON.parse(JSON.stringify(response.data))) this.kpi_kalite.push(response.data[0]) this.renderChildComponent = true; }) },