vue兄弟组件之间传值和方法调用

编程入门 行业动态 更新时间:2024-10-07 15:23:06

vue兄弟<a href=https://www.elefans.com/category/jswz/34/1771375.html style=组件之间传值和方法调用"/>

vue兄弟组件之间传值和方法调用

vue兄弟组件之间传值和方法调用

 

1.兄弟组件相互传值

1.1 vuex传值

实现效果:兄弟组件之间传值,child1的值发生变化,child2值也能随之发生变化

子组件一代码,child1.vue,点击button,连接store.js mutations中的changeTitle事件,进行更改值

<template><div><input type="text"v-model="title"/><button type="button" @click="handleClickChangeTitle(title)">更改title的值</button><div>{{title}}</div></div>
</template>
<script>
export default {data() {return {title: ""};},methods: {handleClickChangeTitle(title){this.$storemit("changeTitle",title)}}
}
</script>

 

子组件二代码:child2.vue直接显示store.js中state中的值即可

<template><div>{{$store.state.title}}</div>
</template>

store.js代码,

import Vue from "vue";
import Vuex from "vuex";Vue.use(Vuex);export default new Vuex.Store({state: {title: ""},mutations: {changeTitle(state, title) {state.state = title;}}
});

 

1.2 $emit传值,props接收

使用$emit将child1.vue的值给父组件,父组件将值传给child2.vue,child2.vue使用props接收

parent.vue

<template><div><h2>我是父组件</h2><child1 @handleClickChange="handleClickChangeTitle"></child1><child2 :ptitle="title"></child2></div>
</template>
<script>
import child1 from "child1";//文件地址
import child2 from "child2";//文件地址
export default {data() {return {title: ""};},components: {child1,child2},methods: {handleClickChangeTitle(title){//将改方法传递给child1组件this.title = title}}
}
</script>

child1.vue

<template><div><h2>我是child1组件</h2><div><input type="text"v-model="title"/><button type="button" @click="handleClickChangeTitle(title)">更改title的值</button><div>{{title}}</div></div></div>
</template>
<script>
export default {data() {return {title: ""};},methods: {handleClickChangeTitle(title){this.$emit("handleClickChange",title)//连接父组件的handleClickChange方法,同时将值传递给父组件}}
}
</script>

child2.vue

<template><div>{{ptitle}}</div>
</template>
<script>
export default {
//接收父组件穿过来的值ptitleprops:{ptitle:{ type: String}}
}
</script>

 

1.兄弟组件相互调用方法

父组件代码

<template><div><h2>我是父组件</h2><child1 @handleClickChange="handleClickChangeTitle"></child1><child2 ref="changeTitle"></child2></div>
</template>
<script>
import child1 from "child1";//文件地址
import child2 from "child2";//文件地址
export default {data() {return {title: ""};},components: {child1,child2},methods: {handleClickSearch() {//header组件和home组件相互通信this.$refs.changeTitle.changeTitle();}}
}
</script>

child1.vue代码

<template><div><h2>我是child1组件</h2><div><input type="text"v-model="title"/><button type="button" @click="handleClickChangeTitle(title)">更改title的值</button><div>{{title}}</div></div></div>
</template>
<script>
export default {data() {return {title: ""};},methods: {handleClickChangeTitle(title){this.$emit("handleClickChange",title)//连接父组件的handleClickChange方法,同时将值传递给父组件}}
}
</script>

child2.vue代码

<template><div></div>
</template>
<script>
export default {methods: {changeTitle() {console.log("我是child2组件,changeTitle方法由child1组件触发")}}
}
</script>

后期继续更新!

更多推荐

vue兄弟组件之间传值和方法调用

本文发布于:2024-02-27 20:14:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765928.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组件   兄弟   方法   vue

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!