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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!