javascript - 在本地存储道具(vue2)
问题描述
下列的:
我有:
https://codesandbox.io/s/u3mr8
给出以下警告:
(这个想法是避免改变道具)。在简单的复制对象操作中会发生什么副作用?我不明白。该函数只是将道具保存到数据中。
拖放失败,原因如下:
你真的需要一个计算道具的设置器吗?
看着:
我想出了:
https://codesandbox.io/s/39sgo
这很棒,没有警告,没有错误;只是组件不再渲染(无法从 prop 中获取保存的数据)。
任何想法/建议/帮助/建议都会非常非常棒。
解决方案
我认为抛出错误是因为不允许在 getter 中设置生成计算属性的值。在得到计算结果的同时修改初始值是一个逻辑循环。相反,您可以在初始调用 getter 时返回 prop 值(如果尚未设置本地值)。
get() {
if (!this.itemSectionPropsLocal["itemSectionCategory"]) {
return Object.assign({}, this.itemSectionProps)[
"itemSectionCategory"
];
}
return this.itemSectionPropsLocal["itemSectionCategory"];
},
set(value) {
this.itemSectionPropsLocal = value;
},
此外,在 setter 中,您应该分配接收到的值而不是 prop。如果您想在安装后道具值发生变化时更新本地值,您应该使用观察者。
watch: {
itemSectionProps: {
deep: true,
handler(val){
this.getPropsLocal = Object.assign({}, val["itemSectionCategory"])
}
}
}
推荐阅读
- android-studio - 使用带和不带模型类的recyclerview之间的区别
- perl - Perl - 如何直接在 Perl shell/解释器中键入/执行/运行 Perl 语句?
- reactjs - 如何在模态视图中实现反应原生谷歌地方自动完成
- django - 如何在基于 Django 类的视图中更改模板
- regex - Matlab 正则表达式提取值
- php - 如何显示指定日期之间的数据并仅获得这些数据的总和?
- html - 有谁知道为什么我的 Bootstrap 4 订单类不起作用?
- r - 用 ggplot2 添加虚线
- mysql - 如何使用外部数据库浏览器或类似工具访问 ddev 的数据库?
- javascript - 用 ajax 脚本中的 %20 替换空格