[英]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.