当前位置: 首页 > 知识库问答 >
问题:

前端 - vue2封装的业务组件获取数据的方法到底是应该在父组件里调用然后传数据进来,还是写在业务组件里,created时调用?

颛孙凯定
2023-09-26

如果业务组件使用比较频繁,要抽成公共的,那么它的获取数据的方法如果不放在业务组件内,是不是意味着每次调用的时候都要写一遍,感觉会很恶心。但是如果写在内部,调用它的父组件应该在什么时机调用它?以及以什么方式调用它呢?

共有3个答案

曹子平
2023-09-26

这取决于你的场景。

  1. 父组件请求的场景:假如你的公共组件是 table,父组件本身或者其他子组件会操作你 table 的数据并影响 table 组件,此时你应该放在父组件。
  2. 子组件单独请求 : 核心数据仅在组件自身中进行处理,外部无需(操作 | 干预) 的情况下。
子车成和
2023-09-26

看具体使用需求,如果一显示该组件就要调用,就在组件的created周期里面调用

柴彬
2023-09-26

这个问题涉及到Vue组件之间的数据传递和生命周期钩子的使用。在Vue中,有几种方式可以获取数据,包括在父组件中调用子组件并传递数据、在子组件中使用created生命周期钩子获取数据等。具体应该使用哪种方式取决于你的实际需求。

如果你希望在父组件中控制业务组件的获取数据,可以在父组件中定义一个方法,然后在业务组件中使用$emit来触发这个方法并传递数据。这种方法的好处是可以在父组件中控制获取数据的时机,同时在业务组件中可以复用获取数据的方法。例如:

// 父组件<template>  <div>    <my-component @getData="getDataFromApi"></my-component>  </div></template><script>import MyComponent from './MyComponent.vue'export default {  components: { MyComponent },  methods: {    getDataFromApi() {      // 调用 API 获取数据并传递给业务组件      this.$http.get('/api/data').then(response => {        this.$children[0].setData(response.data)      })    }  }}</script>// 业务组件(MyComponent.vue)<template>  <div>    <!-- 组件内容 -->  </div></template><script>export default {  created() {    this.$emit('getData')  },  methods: {    setData(data) {      // 处理接收到的数据      this.$data.data = data    }  }}</script>

如果你希望将获取数据的方法写在业务组件内部,可以在created生命周期钩子中进行调用。这种方式的好处是可以减少父组件中的代码量,但需要在每个需要使用该业务组件的地方重复写一遍获取数据的代码。例如:

// 业务组件(MyComponent.vue)<template>  <div>    <!-- 组件内容 -->  </div></template><script>export default {  data() {    return {      data: null    }  },  created() {    this.getDataFromApi()  },  methods: {    getDataFromApi() {      // 调用 API 获取数据并存储到 data 属性中      this.$http.get('/api/data').then(response => {        this.data = response.data      })    }  }}</script>

在这种情况下,父组件只需要将该业务组件引入并使用即可,无需关心数据的获取。使用该业务组件时,可以在任何需要的时候调用它,并且每个调用都可以独立获取数据,不会互相影响。例如:
javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js javascript vue js

 类似资料:
  • 本文向大家介绍Vue2.x中的父组件传递数据至子组件的方法,包括了Vue2.x中的父组件传递数据至子组件的方法的使用技巧和注意事项,需要的朋友参考一下 父组件结构 template script 注意的点: •子组件的拼写方式:vGirlGroup写成v-girl-group •这里子组件中的绑定数据是:girls="aGirls",这里的aGirls数据是父组件中的data,girls是要传递至

  • 问题内容: 在React中,我有类似的文件 parent.js 包含文本框和按钮 child.js 包含P标签 App.js 包含父组件和子组件 问题 将“父级”上的“文本框”值传递给子级,并将其显示在子级标记中。 完整代码 堆叠 问题答案: 更新了示例以将数据传递给子组件。 https://stackblitz.com/edit/react- trmj9i?file=child.js 在下面添加

  • 本文向大家介绍Vue父组件调用子组件事件方法,包括了Vue父组件调用子组件事件方法的使用技巧和注意事项,需要的朋友参考一下 Vue父组件向子组件传递事件/调用事件 不是传递数据(props)哦,适用于 Vue 2.0 方法一:子组件监听父组件发送的方法 方法二:父组件调用子组件方法 子组件: 父组件: 以上这篇Vue父组件调用子组件事件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希

  • 本文向大家介绍详解vue2父组件传递props异步数据到子组件的问题,包括了详解vue2父组件传递props异步数据到子组件的问题的使用技巧和注意事项,需要的朋友参考一下 测试环境:vue v2.3.3, vue v2.3.1 案例一 父组件parent.vue 子组件child.vue 上面按照这里的解析,子组件的html中的{{childData}}的值会随着父组件的值而改变,但是create

  • 我需要在ReactJS中从父组件调用子组件方法。我试过使用裁判,但不能做到这一点。有没有人能提出任何解决方案。多谢了。

  • 问题1 子组件是个select ,数据都是从api获取,每次都是固定的内容。 父组件中的列表需要大量调用这个子组件,每次这个组件都需要调用api获取数据,每次数据都是一样,这个地方是不是需要优化? 问题2 如果需要优化的话,从react官网找了一下,简单做了更改,理论上每次excuteCallBack 是同一个引用,但是debug的时候 useEffect每次被调用没法证明excuteCallBa