两个组件绑定Vuejs

IT技术 javascript vue.js
2021-02-25 15:28:00

如何完美地组织两个 vuejs 组件之间的数据和交互?例如:1)我有一个组件

item(v-for="item in items)
 a {{item.name}}

2)和第二个

card(v-for="item in items")
 div.content
  img {{item.photo}}
  div {{item.desc}}
  button Details

主要思想是当我点击列表项时,我想切换具有相同 ID 的卡片,就像列表一样。我使用 vue webpack 模板中的一个文件组件管理。

1个回答

很多人似乎试图在没有商店的情况下使用 Vue。你能成为其中之一吗?也许是因为 store 不是严格意义上的 Vue 的一部分?也许是因为文档在亲子交流、事件等(复杂)花费的时间比在状态管理(简单)上花费的时间多也许是因为面向对象已经腐烂了我们的大脑?

Vue 想与商店交谈。双向绑定的重点是将状态与标记分开。这是一个如此天才想法的全部原因是许多(大多数?)状态项在屏幕上有不止一个表示,就像您的 items 数组。您的商店可以像窗口范围内的 js 对象一样简单,应该包含给定时刻的所有页面状态。您应该能够在页面之间复制粘贴商店,并在屏幕上查看相同的内容。商店的重要品质是...

  • 只有其中之一。
  • 您“规范化”您的商店,以便状态项仅存储一次,并且状态项之间的依赖性最小。

您的 items 数组应该在 store 中,并且两个组件都引用了这个“单一事实来源”。如果您正在使用其他人的组件,那么您需要为他们提供一些属性,但属性用于通过 Vue 组件创建隧道以将叶组件与您的商店链接。你的项目就是你的状态,状态通常不应该存在于 Vue 的东西中。这有帮助吗?

这是一个有趣的评论。我一直认为 Vue 的 $emit 和 $on 非常短视。就像仅限于父/子或祖先/后代层次结构的 pubsub 似乎非常有限。我什至问过这个问题:stackoverflow.com/questions/47366103/vue-component-on-use-case但是,现在更深层次的问题是,为什么 Vue 作为框架不记录/强调状态管理?WDYT ...
2021-04-23 15:28:00
@82Tuskers。Vue 文档通常很棒,而且一切都在那里,但它们并不能帮助您确定一个功能相对于另一个功能的优先级。状态管理的简单示例以 开头const,因此任何怀疑 const 的人都会关闭或阻止它。这个问题出现得如此频繁以至于我同意,确实值得在文档中更加努力地坚持。
2021-04-28 15:28:00
我最近最喜欢的例子是这里当您找到正确的商店时,这个潜在的复杂问题就变得简单了。您可能也对这个问题感兴趣,对我来说是一个人们在没有商店的情况下陷入困境的例子,或者这个答案的评论线程
2021-04-30 15:28:00
💯M 很难发现这一点。我已经开始了几个 Vue 项目,认为它们“太小”而无法打扰 store。👎🏾现在我正在用 Vuex 重启那些项目!😫
2021-05-16 15:28:00