Cette fois, je vais vous donner une explication détaillée des étapes de transmission des données dans le composant vue. Quelles sont les précautions pour transmettre des données dans le composant vue. Voici un cas pratique, prenons un. regarder.
Les portées des composants de Vue sont toutes isolées et ne permettent pas de références directes aux données du composant parent dans le modèle d'un composant enfant. Des méthodes spécifiques doivent être utilisées pour transférer les données entre les composants. Il existe environ trois situations dans lesquelles les données sont transmises entre les composants :
Les composants parents transmettent des données aux composants enfants et les données sont transmises via des accessoires.
Le composant enfant transmet les données au composant parent et transmet les données via des événements.
Transférez des données entre deux composants frères via le bus d'événements.
Partie sous-composant :
<template> <p class="child"> {{ msg }} </p> </template> <script> export default { name: 'child', data(){ return { } }, props: ['msg'] </script>
dans Child.vue, msg est une variable définie dans data. Utilisez props : ['msg'] pour obtenir la valeur de msg du composant parent
Partie du composant parent :
<template> <p class="child"> child <child :msg="message"></child> </p> </template> <script> import child from './child.vue' export default { name: 'parent', components: { child }, data () { return { message: 'hello vue' } } } </script>
Flux de données unique
Lorsque le message du composant parent change, le composant enfant mettra automatiquement à jour la Méthode 1 : Attribuez prop à une variable locale, puis modifiez la variable locale si vous devez la modifier, sans affecter propexport default { data(){ return { newMessage: null } }, props: ['message'], created(){ this.newMessage = this.message; } }
export default { props: ['message'], computed: { newMessage(){ return this.message + ' 哈哈哈'; } } }
<template> <p class="child"> <span>用户名:</span> <input v-model="username" @change="sendUser" /> </p> </template>
<script> export default { name: 'parend', data () { return { username: '' } }, methods: { sendUser () { this.$emit('changeName', this.username) } } } </script>
<template> <p class="parent"> <child @changeName="getUser"></child> <p>用户名:{{user}}</p> </p> </template>
<script> import child from './child.vue' export default { name: 'parent', components: { child }, data () { return { user: '' } }, methods: { getUser(data) { this.user = data } } } </script>
<template> <p id="app"> <c1></c1> //组件1 <c2></c2> //组件2 </p> </template>
<template> <p class="c1"> page <button @click="changeMsg">click</button> </p> </template> <script> var Bus = new Vue(); //为了方便将Bus(空vue)定义在一个组件中,在实际的运用中一般会新建一Bus.js export default { name: 'c1', data () { return { message: 'hi' } }, methods: { changeMsg () { //点击按钮,将this.message传递给c2 bus.$emit('sendMsg', this.message) } } } </script>
<template> <p class="c2"> {{msg}} </p> </template> <script> var Bus = new Vue(); export default { name: 'c2', data () { return { msg: '' } }, created () { bus.$on('sendMsg',(data)=>{ //data即为c1组件中的message this.msg = data }) } } </script>
//Bus.js import Vue from 'vue' const Bus = new Vue() expore default Bus
Application réelle :
import Vue from 'vue' const Bus = new Vue() var app= new Vue({ el:'#app', data:{ Bus } })
Appelez this.$root.Bus.$on(),this.$root.Bus.$emit()
Analyse des étapes d'utilisation des icônes d'icônes personnalisées dans Vue
Explication détaillée des étapes d'utilisation de Vue2x plug-in d'aperçu d'image
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!