javascript - 如何将道具从父组件添加到子组件的子组件
问题描述
我必须将道具从父组件传递给子组件的子组件。请帮忙,因为我是 Vue.js 的新手
parent component --> child component --> child component
我从来自不同组件的成员目录组件调用 rolodex 跟随页面和连接页面,但我需要知道它是从哪里调用的 rolodex 组件?这样我就可以在 rolodex 组件中显示,例如“从 < > 调用的 rolodex”我<Rolodex>
从多个组件调用。
<Follow Component>---><member directory>---><rolodex>,<search-results>
<Connections component>--><member directory>---><rolodex>,<search-results>
解决方案
你有几个选择。
道具
你可以只传递道具,一次一个组件。每个组件将相关值传递给需要它们的子级。这应该是您的默认选项,但它存在一些问题:
- 如果有多个级别,它可能会变得乏味。
- 在许多情况下,中间组件实际上并不关心它们传递的道具。
- 如果子/孙中的数据发生变化,您最终会产生类似乏味的事件链,这些事件链会被发送回数据源。
提供/注入
另一种选择是provide
/ inject
:
https://vuejs.org/v2/guide/components-edge-cases.html#Dependency-Injection
https://vuejs.org/v2/api/#provide-inject
这通常被认为是一项高级功能,使用它有几个注意事项。但是,它确实允许组件将“远程道具”向下传递给后代,跳过中间的任何组件,而他们对此一无所知。
如果数据更改需要传回源,它可能会变得很棘手,因为provide
/inject
只在一个方向上真正起作用。如果数据作为引用类型传递,则可以直接在后代中对其进行修改,尽管这将被视为违反单向数据流。理论上可以通过provide
/传递一个回调函数来inject
代替事件。一切都变得有些混乱。
Vuex
当数据需要在组件树中跳转时,标准的解决方案是 Vuex 存储:
我不会详细介绍 Vuex,其他地方已经写了很多关于它的文章,但关键思想是数据存储在单例中,可以从应用程序的任何地方访问。
在这个问题的背景下,问题可能是背景。如果您同时rolodex
显示多个实例,它们将在商店中查看相同的状态。它一次只对一个实例真正有效,祖先设置状态,后代读取它。
推荐阅读
- python - 按日期进行标记化以按主题进行文本分类
- css - 有没有办法通过父 div 来缩放高度和宽度?
- ios - 在 Swift 中以编程方式返回到早期的 UIViewController
- nlp - 如何在 GSDMM 中获取文本属于某个主题的概率?
- python - 在 bash 脚本中从 Python 返回数组值的最佳方法是什么?
- c - CS50 PSet4 - 模糊滤镜,我得到黑色图像作为输出
- reactjs - 如何使用从 createEntityAdapter 生成的 selectById 选择器
- excel - 如何在 Excel 中对所有玩过的 yahtzy 游戏进行“统计”?
- javascript - 如何禁用浏览器的自动完成功能
- javascript - 我需要 Javascript 帮助更新我网页上的访问次数,以跟踪我的 API 上的点击量