【发布时间】:2019-12-22 01:06:46
【问题描述】:
我对将数据从父组件传递到子组件和模块化策略的最佳实践感到困惑。
据我所知有两种方法:
- 在父组件中获取数据并通过 props 将 Array/object 发送给子组件
- 通过 props 将 parent_id 发送给子组件并在子组件中获取数据
让我们假设一个使用产品编辑视图的用例,具有:
- 父组件
product - 一个子
form组件编辑基本产品信息 - 可以链接/取消链接其他产品的子
related_products组件。
根据我的经验,第一种方式运行顺利,因为它全部在对 API 的 1 个请求中完成:在父组件中获取 product 对象并将产品本身通过 props 传递给 form 组件和related_products 组件的嵌套对象。此外,它可以在beforeRouteEnterguard 中完成,这样父级及其所有子级会立即显示所有信息。我在这里看到的缺点是我们必须将正确的对象结构发送给子组件以避免任何错误,组件之间具有很强的依赖关系。
另一方面,通过props 向每个子组件发送parent_id,我们将父组件从任何逻辑中释放出来。在这种情况下,每个子组件都充当“黑匣子”并获取/处理信息。我在这里看到的缺点是我们必须执行 2 个 API 请求才能获取产品和相关产品。此外,beforeRouteEnter 根本不可行,所以在检索到数据之前,我们会得到一个空的表单/表格。
这不是关于如何编写代码,而是关于根据您的经验最好的实现。
【问题讨论】:
标签: vue.js vue-component parent-child vue-router modularity