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监听该自定义事件并添加一个响应该事件的处理方法

相关推荐
掘金者阿豪6 分钟前
微信图片已过期或已被清理,真的找不回了吗?完整自救指南
前端·后端
颜酱9 分钟前
从 DeepSeek 文本对话到流式输出
前端·javascript·人工智能
Ulyanov26 分钟前
打造现代化雷达电子对抗仿真界面 第二篇:雷达电子对抗仿真系统核心功能实现
前端·python·信息可视化·数据可视化·系统仿真·雷达电子战
鬣主任26 分钟前
重生之我上班学React----360档案篇。
javascript·react.js
快乐小土豆~~27 分钟前
上传视频时截取正脸照片
前端·音视频·vladmandic
276695829238 分钟前
token1005 算法分析
java·前端·javascript·token·token1005·携程酒店·token算法分析
乆夨(jiuze)38 分钟前
记录一个css,实现下划线内容显示,支持文本多行显示
前端·css
GISer_Jing40 分钟前
前端视频多模态:编解码、传输、渲染全链路详解
前端·人工智能·音视频
恋猫de小郭1 小时前
Flutter PC 多窗口最新进展,底层原生窗口句柄支持已合并
android·前端·flutter
LIO1 小时前
Vue3 + Vite + Pinia + TypeScript 项目完整搭建与实战指南
前端·vue.js