[英]Vue js - pass data within two components in the same level
我有需要從一個component1
傳遞到另一個component2
。
我不使用vuex或路由器 。
組件樹:
-Parent
--Component1
--Component2
從第一個component1
我發出ajax請求,檢索信息並推送到數據。
board: [1,2,3,4,5]
我需要訪問component2
中檢索到的數據
我可以不用vuex或路由器嗎?
謝謝 :)
您可以從component1
向父component1
發出一個事件,該component1
具有作為參數的更新board
並且在父component2
接收該事件並將其通過props
傳遞給component2
在component1
:
this.$emit("sendToComp2",this.board);
在parent
組件中:
<template>
<component1 @sendToComp2="sendTo2"/>
...
<component2 :boards="boards" />
....
</template>
data:{
boards:[]
},
methods:{
sendTo2(boards){
this.boards=boards
}
}
component2
應該具有名為boards
屬性
props:["boards"]
這個想法是你有一個父組件,它至少有兩個子組件。 子組件可以觸發父組件中的事件以及父組件之間的事件。 因此,如果Component1需要向Component2發送消息,它可以向Parent觸發事件,然后Parent觸發Component2的事件。 例:
<script>
export default {
name: 'Car',
methods: {
handleClick: function() {
this.$emit('clickedSomething')
}
}
}
</script>
和
<template>
<div>
<Car v-on:clickedSomething="handleClickInParent" />
<!-- or -->
<Car @clickedSomething="handleClickInParent" />
</div>
</template>
<script>
export default {
name: 'App',
methods: {
handleClickInParent: function() {
//...
}
}
}
</script>
資料來源: https : //flaviocopes.com/vue-components-communication/
你必須遵循“共同的祖先模式”。
考慮以下Parent
組件:
<template>
<div>
<child-one :onData="onDataFromChildOne"></child-one>
<child-two :newData="dataToChildTwo"></child-two>
</div>
</template>
<script>
export default {
name: "Parent",
data() {
return {
dataToChildTwo: null
}
},
methods: {
onDataFromChildOne(data) {
this.dataToChildTwo = data;
}
}
}
</script>
ChildOne
組件將接收一個名為onData
的prop
函數,該函數應在ajax調用完成時調用。 然后:
<script>
import axios from 'axios';
export default {
name: "ChildOne",
props: ['onData'],
beforeMount() {
axios
.get('/data')
.then(res => {
this.onData(res.data);
});
}
}
</script>
當onData
被執行時, dataToChildTwo
將被更新, ChildTwo
將接收新數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.