vue3的父传子问题(单项数据流)

 更新时间:2023年01月16日 11:39:51   作者:yezi153  
这篇文章主要介绍了vue3的父传子问题(单项数据流),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue3父传子(单项数据流)

父组件通过属性绑定传递数据 

子组件内部通过props接收数据 

基本数据类型---改变父组件的数据--只改变了 父组件的的数据在子组件的显示

 

通过动态属性绑定 传递list给子组件

 

在子组件内部修改父组件的复杂数据类型的数据---可以修改 

 

vue3 父子传参 简单易懂

父传子

1、 在父组件的子组件标签上通过 :传递到子组件的数据名="需要传递的数据"

在这里为了大家区分我将父组件中的数据定义为 : fatherData  ,

子组件需要接收的数据定义为: sonData 。

// 父组件
<template>
  <div class="about">
    {{fatherData}}
    <!-- 父传子 -->
    <!-- 1、 在父组件的子组件标签上通过 :传递到子组件的数据名="需要传递的数据" -->
    <children :sonData="fatherData"></children>
  </div>
</template>
 
<script>
import children from "@/components/children"
import { defineComponent,reactive,toRefs } from "vue";
export default defineComponent({
  components:{
    children,
  },
name:"about",
setup(){
  const state = reactive({
    fatherData:"hello"
  })
  return {
    ...toRefs(state)
  }
}
 
})
</script>

2、子组件依旧通过 props 来接收并且在模版中使用

那么大多数情况下都会去通过父组件传递到子组件中的数据,根据这个数据去做一些特定的功能或者请求数据等等。

在 setup 钩子中第一个参数 props 就可以访问到父组件传递的数据,那么在函数中也是通过:  props.父组件传递数据的名称   来操作该数据。

setup函数接收props作为其第一个参数,props对象是响应式的(单向的父—>子),watchEffect或watch会观察和响应props的更新。不要对props对象进行解构,那样会失去响应性。在开发过程中,props对象对用户空间代码时不可变的,用户尝试修改props时会触发警告。

// 子组件
<template>
  <div class="children">
    <!-- 3、在子组件模版中使用 -->
    {{sonData}}
  </div>
</template>
<script>
export default {
name:"Children",
// 2、子组件通过 props 来接收
  props:["sonData"],
  setup(props){
    function childrenbut(){
      // props.sonData  可以访问到父组件传递的数据
      console.log(props.sonData);
    }
    return {
      childrenbut
    }
  }
}
</script>

子传父

1、子组件触发事件通过 setup 的第二个参数 context.emit 来实现子传父 

context 上下文对象。

// 子组件
<template>
  <div class="children">
    {{sonData}}
    <!-- 1、触发事件 -->
    <button @click="childrenbut">子组件按钮</button>
  </div>
</template>
<script>
export default {
name:"Children",
  setup(props,context){
    function childrenbut(){
      console.log(context);
      // 2、通过context.emit 实现子传父
      // 第一个参数为 方法名,第二个参数为 需要传递的数据
      context.emit("change",'world')
    }
    return {
      childrenbut,
    }
  }
}
</script>

context 也可以使用结构的形式这样写

// 子组件
<script>
export default {
name:"Children",
  // 通过结构 之后直接写 emit {emit}
  setup(props,{emit}){
    function childrenbut(){
      // 省去 context.emit
      emit("change",'world')
    }
    return {
      childrenbut,
    }
  }
}
</script>

最后总结一下:

在 vue3 中无论是父传子还是子传父其实与 vue2 中都相差无几,

思想大多一样,不一样的是 vue3 需要通过调用各种各样的钩子来实现传参。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决echarts图表使用v-show控制图表显示不全的问题

    解决echarts图表使用v-show控制图表显示不全的问题

    这篇文章主要介绍了解决echarts图表使用v-show控制图表显示不全的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue如何使用vue slot封装公共组件

    vue如何使用vue slot封装公共组件

    这篇文章主要介绍了vue如何使用vue slot封装公共组件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Vue常见报错整理大全(从此报错不害怕)

    Vue常见报错整理大全(从此报错不害怕)

    写代码的过程中一定会遇到报错,遇到报错不要担心,认真分析就可以解决报错,同时积累经验,早日成为大牛,这篇文章主要给大家介绍了关于Vue常见报错整理的相关资料,需要的朋友可以参考下
    2022-08-08
  • Vue2.0实现组件之间数据交互和通信操作示例

    Vue2.0实现组件之间数据交互和通信操作示例

    这篇文章主要介绍了Vue2.0实现组件之间数据交互和通信操作,结合实例形式分析了vue2.0组件之间通信的原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-05-05
  • 详解vue.js移动端导航navigationbar的封装

    详解vue.js移动端导航navigationbar的封装

    本篇文章主要介绍了vue.js移动端导航navigationbar的封装,具有一定的参考价值,有兴趣的可以了解一下
    2017-07-07
  • 详解如何使用vue和electron开发一个桌面应用

    详解如何使用vue和electron开发一个桌面应用

    这篇文章主要为大家介绍了详解如何使用vue和electron开发一个桌面应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • vue中$refs的用法及作用详解

    vue中$refs的用法及作用详解

    这篇文章主要介绍了vue中$refs的用法及作用详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • vue如何获取光标位置

    vue如何获取光标位置

    这篇文章主要介绍了vue获取光标位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 测试平台开发vue组件化重构前端代码

    测试平台开发vue组件化重构前端代码

    这篇文章主要为大家介绍了测试平台开发vue组件化重构前端代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • springboot+vue实现文件上传下载

    springboot+vue实现文件上传下载

    这篇文章主要为大家详细介绍了springboot+vue实现文件上传下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论