vue 修改props
warning:
这篇文章距离上次修改已过469天,其中的内容可能已经有所变动。
在Vue中,应当避免直接修改props,因为props通常代表了父组件传递给子组件的只读属性。如果需要修改从父组件接收的数据,可以通过以下方法:
- 定义一个局部变量,并用
props的值初始化它。 - 使用计算属性(computed),结合
watch来响应props的变化,并进行本地缓存。 - 使用
data中的变量,并通过watch来响应props的变化,更新本地变量。
以下是使用计算属性的例子:
<template>
<div>{{ localMsg }}</div>
</template>
<script>
export default {
props: ['msg'],
computed: {
localMsg: {
get() {
// 返回props的值作为计算属性的默认值
return this.msg;
},
set(value) {
// 可以在这里处理修改逻辑,如果需要的话
console.log('Prop "msg" has been modified to:', value);
// 然后可以发送事件到父组件或者其他逻辑
}
}
},
watch: {
// 监听props的变化,并更新localMsg
msg(newValue) {
this.localMsg = newValue;
}
}
}
</script>在这个例子中,localMsg是一个计算属性,它的get方法返回msg属性的值,而set方法被用来响应localMsg的变化。watch属性用来监听msg的变化,并通过set方法更新localMsg的值。这样,即使msg通过父组件改变了,你也可以在子组件内部自由地处理这些变化,而不会直接修改props。
评论已关闭