vue.js - Vue如何从子组件中获取价值
问题描述
这是我的用例:
我的主页有几个从用户收集不同输入的子组件,最后我想提交收集所有输入的整个页面。因此我想从子组件中检索数据
一种选择是使用store
,但是我的子组件超级简单,只是一些表格,store
似乎太重了......另一种选择是我可以修改prop
,虽然我知道这是不好的做法,但这种方法看起来很完美...... .
如果我的逻辑很简单,可以修改吗?(只是收集用户的输入)或者prop
我必须去Vuex
store
解决方案
扩展 Ifaruki 和 Andres Foronda 的出色答案,另一个相关选项是在sync
子组件的道具上使用修饰符。
假设子组件有一个名为name
. 在父组件中,您可以sync
像这样使用修饰符:
<Child :name.sync="childName"></Child>
然后,在子组件中,当name
prop 的值应该更新时,不要直接更新。相反,发出一个遵循可同步道具的命名约定的事件,即update:nameOfProp
. 所以在我们的例子中,子组件会这样做:
this.$emit('update:name', newName);
sync 修饰符的好处是我们不必在父组件中编写事件处理函数——Vue 会为我们完成并自动更新绑定到 prop 的变量。
您可以在官方文档中sync
阅读有关修饰符的更多详细信息。
推荐阅读
- javascript - 如何检查身份验证令牌是否已过期并强制注销?
- android - 如何将雅虎天气 API 中的日期解析为 Java 日期
- javascript - 尝试将 JSON POST 发送到 Discord Webhook 时,urlFetchApp.fetch() 似乎静默失败
- android - 如何将activity_main布局文件连接到非主要活动
- java - .split() 包含字符“++”的字符串
- python - UnicodeDecodeError:“ascii”编解码器无法解码位置 412200 中的字节 0x9a:序数不在范围内(128)
- python - 使用ansible从windows获取文件到远程主机没有被正确复制
- c++builder - TStringGrid 无法将 VK_DELETE 识别为按键
- mysql - mysql为列创建出现值的列表
- c# - Suite8、Oracle、Fidelio XML 接口获取陪同客人详细信息