组件之间传值(vue的问题)

发布时间:2024年01月20日

父组件传值给子组件 (:messageInfo='message')

在 Vue.js 中,父子组件的关系可以总结为 props down, events up 。

父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息。

例如我们在index.vue中定义一个字段,或者是ajax请求到的数据需要传递给子组的做法如下:

父组件:index.vue:

<template>
    <more :messageInfo='message'></more>
</template>
<script>
  import viewMore from 'viewMore.vue'
  export default {
    name: 'index',
    components: {
	    more: viewMore
	},
    data() {
      return {
	    message: 'hello world'  
      }
    }
  }
</script>

子组件:viewMore.vue

<template>
    <div class="xx">组件</div>
</template>
<script>
  export default {
    name: 'viewMore',
    components: {},
    data() {
      return {
      }
    },
    props: {
        //获取父组件传递的参数
        messageInfo: {
            type: String
        },
      },
  }
</script>
<style  scoped>
	可以定义组件都有的样式
</style>

子组件传值给父组件 (this.$emit('postDataToParentMethod','hello world'))

例如在我们现在需要将子组件中的一个值传递给父组件,平时项目中的情况可能是,在子组件触发一个事件时,或者一个ajax调用完成是需要把数据传递给父组件,我们这里简单的模拟一个点击是事件,做法如下:

子组件:viewMore.vue

<template>
    <div class="xx" @click="postDataToParent">组件</div>
</template>
<script>
  export default {
    name: 'viewMore',
    components: {},
    data() {
      return {
      }
    },
    props: {
        //获取父组件传递的参数
        messageInfo: {
            type: String
        },
      },
    methods: {  
	    postDataToParent: function (event) {  
	      // 给父组件传值 
	     this.$emit('postDataToParentMethod','hello world');
	    }  
  }  
  }
</script>
<style  scoped>
	可以定义组件都有的样式
</style>

父组件获取子组件的值:父组件 index.vue

<template>
	<more :messageInfo='message' @postDataToParentMethod="getData">
	</more>
</template>
<script>
  import viewMore from 'viewMore.vue'
  export default {
    name: 'index',
    components: {
	    more: viewMore
	},
    data() {
      return {
	    message: 'hello world',
	    childData:''
      }
    },
    methods: {
      getDate(data){
        this.childData=data
      }
    }
  }
</script>

我么可以根据实际情况灵活使用子父组件之间的传递值来完成交互。

子组件在父组件中的点击事件

如果需要在父组件中点击子组件,那么需要使用,

@click.native="viewMoreQueryKnowledge()"来触发事件。

文章来源:https://blog.csdn.net/dxn16638400024/article/details/135707338
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。