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

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>
    
posted @   Mochenghualei  阅读(1359)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示