【问题标题】:Where should I put upload function in Vue components?我应该将上传功能放在 Vue 组件中的哪个位置?
【发布时间】:2019-08-06 14:49:44
【问题描述】:

我有一个ImageUploader 组件,我通过它在我的项目中上传图片。

目前需要使用不同的端点进行上传,我想重构这个组件。

我看到了两种方式:

  1. 我可以使用this.$emit(onUpload, files)将上传方法移动到父组件,在父组件中:<ImageUploader @onUpload='uploadHandler'/>

  2. 在将用于加载的组件中将操作作为道具传递 <ImageUploader :uploadAction="AProjectMedia.UPLOAD_IMAGE" />,并在组件中这样使用:this.$store.dispatch(uploadAction, files)

我的选择有多正确?还有哪些选择?

【问题讨论】:

    标签: javascript vue.js coding-style refactoring


    【解决方案1】:

    第一个似乎更好,因为它使您的组件保持清洁以达到一个目的(上传文件)。任何副作用都应该由父母处理。这样,父组件(它们是不同的)负责不同的功能。

    另一种选择是直接从子组件调用操作,但如果您的目标是可重用性,这可能是一个问题。

    【讨论】:

      【解决方案2】:

      我会说 1 号更好。根据最佳实践,组件之间的通信有两种方式:

      Parent -> Child 通过 道具;

      Child -> Parent 通过事件;

      有关详细信息,请参阅this article。即使我使用 Vuex,我也更喜欢这种通信模式,而不是从子组件调用 action/getter。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        • 2020-04-25
        • 1970-01-01
        • 1970-01-01
        • 2014-09-28
        • 1970-01-01
        相关资源
        最近更新 更多