首页 > 其他分享 >Vue3中修改父组件传递到子组件中的值

Vue3中修改父组件传递到子组件中的值

时间:2023-04-03 13:33:50浏览次数:36  
标签:到子 自定义 update 传递 num Vue3 组件 emit

Vue3中修改父组件传递到子组件中的值
1.大家都知道,vue是具有单向数据流的传递特性。当你在子组件中修改父组件传递过来的数据的时候,控制台就会报出错误,说不让你对父组件传递的值进行修改。
2.那么,尤大大为了解决这个问题,在vue3的时候给我们提供了一个新的思路:v-model来实现父传子,并且子也可以修改父组件传递过来的数据。
3. 都读到这里了,我给大家提供两个修改父组件数据的思路(不仅限于vue3):
法一:使用v-model进行父传子,并且子组件修改父组件传递的值。
法二:使用Pinia或者vuex进行状态管理,然后进行数据的修改。

自定义组件上使用v-model
父组件:

//此处是父组件中引入的子组件
<ChildrenView  v-model:num="num"/>

//定义数据
let num=ref(10);//定义num为10,传递给子组件

 

子组件:

<script setup>
    //子组件接收父组件传递过来的数据
    let props=defineProps({
        num:number;
    });
    console.log(props.num)//接收过来的数据num=10

    //重点:开始修改子组件传递过来的num
    //1.引入我们的 **emit("自定义事件名",传递的数据)** 函数,用来触发自定义事件
    //2.使用emit()
    let emit=defineEmits(["update:num"]);//自定义的更新num事件
    //3.假设子组件里的有个按钮,执行的是这个changeNum事件
    let changeNum=()=>{
        emit("update:num",100);//触发自定义事件,将父组件的num修改为100
    }
    
</script>

注意:
1.大家肯定有疑惑,这个emit()不就是子传父的时候用的吗,那么父组件上不应该去绑定这个update:num吗?
如下:父组件:<ChildrenView v-model:num="num" @update:num="changeNum" >
是的,确实是子传父用的,但是你没必要再去绑定@update:num了。
why?
因为尤大大在自定义组件上使用v-model自己已经做过了处理,所以你只需要emit(“定义update:值”,数据)即可修改父组件的值了

总结:
使用步骤如下:
1.父组件中的子组件绑定自定义属性num
2.子组件接收props的num
3.子组件定义emit事件,事件名为update:值 —defineEmits([“update:num”])
4.执行emit() ----emit(“自定义事件update:num”,子传父的值)

//此处的"值"要和v-model:值 保持一致,即:v-model:num   emit("update:num")
let emit=defineEmits(["update:值"])  
emit("update:值",子传父的数据),执行即修改了父组件传递过来的值

 

标签:到子,自定义,update,传递,num,Vue3,组件,emit
From: https://www.cnblogs.com/bisiyuan/p/17282795.html

相关文章

  • 【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒
    此页可在动态列表的基础上完善,也可以单独学习【微信小程序-原生开发】实用教程10-动态列表的新增、修改、删除效果预览核心技术列表的分页加载skip跳跃到指定下标开始查询limit限制返回的数据数量(云数据库最多20条/次,云函数最多100条/次)skip配合limit使用,便能实现分页啦!.ski......
  • vue3 - 引入自定义插件的组件的具体写法
    1.背景我的这一篇随笔详细讲解组件怎么制作与引入使用【vue3-在单独的项目制作自定义组件插件,支持vite【前提不要使用webpack专属语法】,并引入插件-心得-岑惜-博客园(cnblogs.com)】但在局部引入组件时,eslint红色警告   引用名言:“又不是不能用==”强迫症看着实......
  • 华为推出的组件库 ,vue的版本OpenTiny
    OpenTiny-企业级产品的完整设计和开发解决方案华为推出的组件库,vue的版本 ......
  • Vue3【Axios网络请求(GET、POST 、并发请求、全局配置 )】(八)-全面详解(学习总结---从入
    ......
  • Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Tele
    ......
  • 微信小程序自定义封装组件-showModal
    封装一个组件这里由于最近使用微信小程序居多,所以着重写的是小程序的,但是万变不离其宗,组件实现思路其实都差不多的微信小程序开发中官方自带的wx.showModal,这个弹窗API有时候并不能满足我们的弹窗效果,所以往往需要自定义modal组件。下面我们进行一个自定义modal弹窗组件的开发,并......
  • vue3挂载全局方法
    在vue3中可以通过app.config.globalProperties来挂载全局方法。main.jsconstapp=createApp(App)//定义全局方法constmyGlobalMethod=()=>{console.log('Thisisaglobalmethod.')}//挂载全局方法app.config.globalProperties.$myGlobalMethod=myGloba......
  • Vue3.0
    1.setup1.理解:Vue3.0中一个新的配置项,值为一个函数2.setup是所有CompositionAPI的表演的舞台3.组件用所用到的:数据方法等等,均要配置在setup中4.setup函数的两种返回值​1.若返回一个对象,则对象中的属性,方法在模板中均可以直接使用(重点关注!)​2.若返回......
  • 基于VUE3开发的CAD图可视化平台代码开源了
    前言唯杰地图VJMAP为CAD图或自定义地图格式WebGIS可视化显示开发提供的一站式解决方案,支持的格式如常用的AutoCAD的DWG格式文件、GeoJSON等常用GIS文件格式,它使用WebGL矢量图块和自定义样式呈现交互式地图,提供了全新的大数据可视化可视化功能。唯杰地图可视化平台旨在打造......
  • 第三十二篇 vue - 应用规模化 - 单文件组件 SFC
    单文件组件SFCVue的单文件组件(即*.vue文件,英文Single-FileComponent,简称SFC)是一种特殊的文件格式,使我们能够将一个Vue组件的模板、逻辑与样式封装在单个文件中Vue的单文件组件是网页开发中HTML、CSS和JavaScript三种语言经典组合的自然延伸。<template>、<sc......