【问题标题】:Vue JS Components structureVue JS 组件结构
【发布时间】:2019-12-10 19:53:38
【问题描述】:

我正在学习 Vue,我怀疑我的 Vue 应用程序的结构。

我了解到组件可以同时包含逻辑和模板。然后我分离了我的组件,每个人都从主应用程序中获取配置(配置是一个坐标为 config.ll、config.lng 的对象)。

我对我的搜索和发现 API 服务进行 ajax 调用,并在每个组件中显示结果(当前位置、您附近的场所等)。

我的问题是:将调用封装到每个组件中是否正确?还是在通用应用程序中获取所需数据然后使用专业人员与组件共享结果更好?

我问的是,因为当我想将类别的点击传达给场所附近的组件时,困难的部分现在开始了,所以我尝试使用发射但没有成功。

//MAIN
<sidebar :config="config"></sidebar>
<content :config="config"></content>

//IN SIDEBAR
<currentLocation :config="config"></currentLocation>
<categories :config="config"></categories>

//IN CONTENT
<venueDetails :config="config"></venueDetails>
<venuesNearYou :config="config"></venuesNearYou>

【问题讨论】:

    标签: vue.js components emit


    【解决方案1】:

    我认为您可以使用类似事件总线的方法 我们在 vue 应用程序中有三种类型的通信(没有 vuex) - 亲子交流,道具全场 - 孩子到父母的通信句柄由来自孩子的自定义事件由父母收听 - 我们使用事件总线方法的非父子组件之间的通信 父母对孩子的例子 -

    孩子到父母的例子 - 在孩子 this.$emit('sendDataToParent',{someData:"some data"}}) - 在父母

    事件总线 在主 vue 实例中 const eventBus = new Vue()

    在某些组件中从哪里发送数据 导入事件总线 eventBus.$emit('someEvent','一些数据')

    在某个组件中从哪里接收数据

    created() {
    // register listener
      eventBus.$on('someEvent',()=>{
    

    }) }

    更多参考 https://vuejs.org/v2/guide/components.html#Passing-Data-to-Child-Components-with-Props https://vuejs.org/v2/guide/components.html#Emitting-a-Value-With-an-Event https://medium.com/easyread/vue-as-event-bus-life-is-happier-7a04fe5231e1

    【讨论】:

    【解决方案2】:

    由于您没有提供太多代码,因此很难帮助您发出事件。但是请检查Vuex。它作为 Vue 应用程序中所有组件的集中存储。

    【讨论】:

    • 非常感谢您的回复!我正在阅读您的链接,我发现:“如果您的应用程序很简单,那么没有 Vuex 很可能会很好。一个简单的商店模式可能就是您所需要的。”这就是我的情况,因为我刚刚学习 Vue 并且正在创建一个简单的应用程序。但是您的建议将来可能会有用!
    • 迟早你会开始使用 Vuex :) 你能提供更多关于你现有问题的代码吗?
    • 代码是一堆属性和方法,我试图弄清楚如何组织它。当应用程序启动时,我会将配置传递给类别组件,其想法是填充类别,使用组件内的 API。我能够做到,这很好。但是当我单击一个类别时,我需要更改场地,另一个组件。我对封装了特定方法的单个组件的假设不再起作用,那么我需要一个更通用的对象来修改列表。在这个简单的应用程序中,商店模式可能对我有帮助吗?
    猜你喜欢
    • 2021-07-19
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多