【发布时间】:2019-02-06 00:16:24
【问题描述】:
我想编写一个可重用的 Vue 选项卡组件(我知道那里有很多,但我这样做是为了挑战)。
我现在面临的问题是在不使用道具的情况下将数据传递给孩子。
原因很简单,我需要子标签元素知道当前选择的标签索引,我不希望使用我的组件的用户总是需要为每个标签组件输入道具。
出于这个原因,我去观察其他 Vue 选项卡库是如何解决这个问题的(bootstrap vue、vue tabs 等),但我发现它们使用 this.$parent 或 @987654324 访问父属性@ 访问子属性。而且我知道这不是 Vue 的方式。
我研究了注入和提供,它很棒,但它不是被动的。
我也不想使用 Vuex,因为我的项目太小了,我希望我的组件可以重用。
有更好的方法吗?
【问题讨论】:
-
你想传递什么信息给你的组件。我看不出有任何理由拒绝道具。因为如果用户不必输入 props,他们必须输入其他内容才能使您的组件以其他方式工作。
-
如果你不想使用
this.$parent或this.$child,你不能使用vuex,因为你正在构建一个组件并且宁愿不使用props,我能看到的唯一解决方案就是去对于localStorage或cookies,尽管我认为您应该使用$child/$parent,因为您正在构建一个独立组件 -
@Ant 我想使用
$child/parent,但我想我在文档中读到了一些不建议这样做的地方。 -
@LukasChen 建议可能不是,但这一切都与您的项目规模有关。如果您打算将它用作不同项目的即插即用组件,那么我看不出有任何其他方式来构建它并拥有所需的“沙盒”
标签: javascript vue.js scope vuejs2 vue-component