【发布时间】:2021-12-27 13:49:39
【问题描述】:
我正在做一个 Vue 项目。 我尝试使用以下代码向道具添加一个字符:
mounted() {
this.link = this.link + '/';
}
问题是我在控制台上收到此错误:
Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'link'
【问题讨论】:
标签: javascript vue.js vuejs2
我正在做一个 Vue 项目。 我尝试使用以下代码向道具添加一个字符:
mounted() {
this.link = this.link + '/';
}
问题是我在控制台上收到此错误:
Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'link'
【问题讨论】:
标签: javascript vue.js vuejs2
你不应该改变道具,一种方法是创建一个computed property:
computed: {
formattedLink: function() {
return this.link + '/';
}
}
【讨论】:
来自 Vue 文档:
所有的 props 在子属性和父属性之间形成一个单向向下的绑定:当父属性更新时,它会向下流向子属性,而不是相反。这可以防止子组件意外改变父组件的状态,从而使您的应用的数据流更难理解。
您可以从子组件发出数据,然后在父组件中侦听它的任何更改以保持数据同步。
<child-component :link="value" @updatedLink="link = $event"></child-component>
从孩子那里发出更新的值。
mounted() {
const val = this.link + '/';
this.$emit('updatedLink', val)
}
您可以在此处阅读更多信息: https://v3.vuejs.org/guide/component-custom-events.html
【讨论】: