首页 > 其他分享 >Vue面试题06:Vue子组件是否可以修改父组件的数据?

Vue面试题06:Vue子组件是否可以修改父组件的数据?

时间:2022-08-22 11:23:08浏览次数:47  
标签:面试题 Vue const prop 修改 props 组件

Vue子组件是否可以修改父组件的数据?

  • 可以修改但不推荐:首先,文档中指出组件开发需要遵循单向数据流原则:即所有的 props 都遵循着单向绑定的原则,props 因父组件的更新而变化,避免了子组件意外修改父组件的状态的情况,不然应用的数据流将很容易变得混乱而难以理解。如果直接修改子组件props,vue会报错;

  • 如果是鉴于以下两种需求更改prop,则建议如下:

    • prop 被用于传入初始值;而子组件想在之后将其作为一个局部状态:这时在子组件定义一个局部变量保存prop初始值即可:

      const props = defineProps(['initialCounter'])
      const counter = ref(props.initialCounter)
      
    • 需要对传入的 prop 值做进一步的转换:这时基于该 prop 值定义一个计算属性即可:

      const props = defineProps(['size'])
      const normalizedSize = computed(() => props.size.trim().toLowerCase())
      
  • 多数情况下子组件应该抛出一个事件来通知父组件做出改变,以Vue2中sync修饰符结合自定义事件为例:

    //父组件
    <Dialog :show.sync="show"></Dialog>
    //子组件
    <el-button @click="$emit('update:show', false)">取 消</el-button>
    

标签:面试题,Vue,const,prop,修改,props,组件
From: https://www.cnblogs.com/Mochenghualei/p/16612188.html

相关文章

  • vue 打包配置相对路径
    前言:临下班了产品找到我,要满足甲方爸爸需求「vue打包的静态资源需要相对路,绝对路径会报错」。时间紧,催的急(半小时问一次),导致我顾此失彼,配置好了这个没配好那个,所以借此反省......
  • 同一个父组件,兄弟组件相互传参,调用
    组件brother2想调用组件brother1的方法,并传参可以新建一个handler.js文件importVuefrom'vue';exportdefaultnewVue();brother1组件方法:importhandlerfr......
  • vue3动态组件切换
    <template><divclass="goods-tabs"><nav><a@click='toggle("GoodsDetail")':class="{active:componentName==='GoodsDetail'}"href="javascript:;">商品详情</a>......
  • vuex的引入
    官方文档可以解决一切问题。1、安装vuexnpminstallvuex@next--save如果版本和你的vue版本不符合,可以根据提示,在@后加上适合的版本号再安装。安装成功之后会在packjs......
  • vue中子组件修改父组件中传递的参数的值
    方法一:1<!--父组件代码-->2<template>3<div>4<p>我是父组件</p>5<button@click="handleShowChild"v-show="!isVisibleChild">显示子组件</but......
  • 054_末晨曦Vue技术_处理边界情况之组件之间的循环引用
    组件之间的循环引用点击打开视频讲解更详细假设你需要构建一个文件目录树,像访达或资源管理器那样的。你可能有一个<tree-folder>组件,模板是这样的:<p><span>{{fold......
  • vue3项目-小兔鲜儿笔记-01-项目初始化
    1.pinia基础store/modules/user.tsimport{defineStore}from'pinia'//用户模块constuseUserStore=defineStore('user',{state:()=>{return{......
  • react面试题
    react事件机制在得到dom树之后,react会处理属性上是否有事件,react不会把事件绑定到真正的节点上,而是把所有的事件绑定在document(最外层节点)上,部分事件除外,如audio、video的......
  • vue中的EL理解
    el的作用:用于指明Vue实例的挂载目标。那么什么是挂载?虚拟dom与真实dom建立关系,让Vue实例控制页面中的某个区域的过程,称之为挂载。挂载的方式有:1、通过“el:'css选择器......
  • vue中打包的时候,如何将console.log去掉
    问题:打包完成后,项目启动后还有打印语句?1.开发环境,生产环境,是2套不同的环境开发环境需要console.log使用生产环境不需console.log使用让一套代码,在2个环境自......