Ren*_*Ren 6 typescript vue.js element-ui
我遇到这个问题:我试图使用输入表单中的值(<el-input>在示例中)修改对象的属性之一。我们公司的堆栈使用 VueJs + TS + ElementUI。不幸的是,对象的属性似乎不能是反应性的并且处于只读模式。如何使对象属性具有反应性?
HTML/CSS
<el-input v-model="group.groupDescription" type="textarea"></el-input>
Run Code Online (Sandbox Code Playgroud)
JS:
interface ViewGroupResult {
id: string;
groupDescription: string;
}
import Vue from 'vue';
import {Component, Watch} from 'vue-property-decorator';
@Component
apollo: {
group: {
query() {
group(groupId: $groupIdOrSlug) { ... }
}
},
variables() {
groupId: this.id
},
fetchPolicy: 'network-only',
loadingKey: 'groupLoading'
},
export default class ViewGroupPage extends Vue implements
group: ViewGroupResult | null = null;
Run Code Online (Sandbox Code Playgroud)
当我尝试在上面的文本区域中键入某些内容时,组对象的属性的值永远不会更新,group.groupDescription即使它与v-model指令绑定也是如此。
Error in event handler for "input": "TypeError: Cannot assign to read only property 'groupDescription' of object '#<Object>'"
我是否误解了 VueJs 中 getter/setter 绑定到数据属性的方式,或者这是 TypeScript 特定的问题?提前致谢!
小智 0
在 VueJS 中,有严格的参数阻止开发人员直接修改 props。解决方法是将数据属性设置为相应 prop 给出的初始值。IE 给定一个 prop,initialUser我们将设置一个 data 属性,user并使用此方法将其值设置为,this.initialUser您将能够修改user变量,同时仍然通过 prop 获取传递给组件的初始值initialUser。请让我知道,如果你有任何问题。
props: {
initialUser: {
type: Object,
required: true
}
},
data() {
return {
user: this.initialUser
}
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17403 次 |
| 最近记录: |