vue.js - Vue.js 使用自定义类型的两种方式绑定
问题描述
我认为 Vue.js 中父子组件之间的双向数据流不仅不鼓励而且是不可能的。但是我发现实际上可以使用自定义类作为道具。
自定义类:
class MyClass {
constructor(val) {
this.val = val;
}
}
父模板:
<div>
<child :obj="obj"></child>
</div>
儿童道具:
props: {
obj: MyClass
}
子模板:
<div>
<button @click='obj.val="changed"'>Change val</button>
</div>
这是一个工作示例:https ://codepen.io/francoisgaudin/pen/XWdBOxN
所以现在我想知道为什么这是可能的 - 它是故意允许的还是不应该被利用的漏洞?
解决方案
我在 Vue.js 文档中找到了关于“单向数据流”(https://vuejs.org/v2/guide/components-props.html#One-Way-Data-Flow)的答案。他们指定了以下警告:
请注意,JavaScript 中的对象和数组是通过引用传递的,因此如果 prop 是数组或对象,则在子组件内改变对象或数组本身会影响父状态。
因此,一种方式的数据流没有被严格执行,在这种情况下没有错误或警告。这是一个漏洞——(最好避免)。
推荐阅读
- svg - 如何正确设置 svg 和图像比例?
- javascript - 文本更改时淡入淡出
- distributed-transactions - 关于在 YugabyteDB 中使用 safe_time 的说明
- java - 包含与 ObservableList() 总是返回 false
- c - 为什么我必须发送两次信号?
- selenium-chromedriver - 错误:类型不匹配:无法从 ChromeDriver 转换为 WebDriver
- pine-script - Pine 脚本 - 在满足购买条件后仅绘制一次
- python - 根据标准查找另一个数据框的最有效方法,用于按 3D 尺寸和重量包装问题
- java - 降级到 jdk11 后无法构建 JavaFx 项目
- php - Laravel 雄辩的 whereHas() 无法使用 with() 急切加载