vue中父组件向子组件传值,子组件向父组件传值,简洁易懂

Vue中父组件传值到子组件

Vue中父组件传值分为两步:
一、父组件中代码中,使用属性绑定向子组件传递数据,

如图, 其中,:titles="title"就是在将父组件的title属性值,传递到子组件所绑定的titles属性中,这时候,子组件就有了一个带有值的titles属性了

复制代码
<template>
  <div class="parent">
    <h1>我是父组件</h1>
    <childVue :titles="title" :contents="content"></childVue>
  </div>
</template>

<script>
import childVue from './child.vue'
export default {
  name: 'parant',
  components:{
    childVue
  },
  data() {
    return {
      content: "我是父组件传过来的内容"
    };
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.parent{
  width: 500px;
  height: 500px;
  background: rgb(146, 133, 133);
  
}
</style>

二、子组件需要接收传过来的属性值

如下代码,子组件需要使用props属性去接受刚刚父组件传递过来的属性titles和contents,需要定义一下属性类型哦

复制代码
<template>
  <div class="child">
    <h2>我是子组件</h2>
    <h4>{{titles}}</h4>
    <h4>{{contents}}</h4>
  </div>
</template>

<script>
export default {
  name: 'helloChild',
  props: {
    titles: String,
    contents: String
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.child{
  width: 400px;
  height: 300px;
  background: rgb(157, 117, 117);
}
</style>

总结一下:

父组件中引入子组件、注册子组件,tempalte中使用子组件; import 、components、

子组件: props中创建一个属性,接受父组件传的值;

在template中使用 {{contents}};

父组件中的 , :title与子组件中prop添加的属性名称要一致;

="title"与父组件中data数据中的title名称要一致;

props绑定的写法也可以写成这样的形式

复制代码
 props: {
    title: {
      type: String,  // [String, Number],
      default: 1
    }
  }

Vue中子组件传值到父组件

子组件传值到父组件也有两步。
一:子组件通过$emit触发一个自定义事件,传递属性出去

如下,通过按钮(也可以其它方式,能触发emit即可),触发emit方法,传递datas的值出去

复制代码
<template>
  <div>
    <h1>children</h1>
      <button @click="sendTOParent">向父组件传值</button>
  </div>
</template>>
<script>
export default {
  data() {
    return {
      datas: "子组件中的信息"
    };
  },
  methods:{
        sendTOParent(){
            this.$emit('listenToChildEvent',this.data)
        }
    }
};
</script>>

2.在父组件中引用子组件的标签中,使用v-on监听该自定义事件并添加一个响应该事件的处理方法

复制代码
<template>
  <div>
    <h1>我是父组件</h1>
    <children v-on:listenToChildEvent = 'showMsgfromChild'></children>
  </div>
</template>>
<script>
import Children from "./Children";
export default {
  data() {
    return {
    };
  },
   methods:{
        showMsgfromChild(data){
            console.log(data)
        }
    },
   components: {
    Children
  },
};
</script>

总结:

子组件通过$emit传递参数出去,在父组件中引用子组件的标签中,使用v-on监听该自定义事件并添加一个响应该事件的处理方法

相关推荐
华洛17 分钟前
《从0到1打造企业级AI售前机器人——实战指南五:处理用户意图的细节实现!》
javascript·vue.js·node.js
掘金安东尼42 分钟前
7个【宝藏工具】从智能画图到 SSL 自动化,一应俱全
前端·面试·github
zhangxingchao1 小时前
Flutter屏幕适配指南
前端
石小石Orz1 小时前
被对象嘲讽,写个网页护眼宝你都不会么
前端
江城开朗的豌豆1 小时前
🔥 Vue组件传值:小杨教你玩转父子组件通信
前端·javascript·面试
江城开朗的豌豆1 小时前
Vue组件花式聊天指南:6种传值妙招,总有一款适合你
前端·javascript·vue.js
黑土豆1 小时前
在Vue3项目中实现PDF文件解析与预览的完整实践
前端·javascript·vue.js
han_1 小时前
前端如何动态执行JavaScript代码?
前端·javascript
10年前端老司机4 小时前
10道js经典面试题助你找到好工作
前端·javascript
小小小小宇9 小时前
TS泛型笔记
前端