vue3调用公共方法获取数据

2025-03-16 0 27

Image

《vue3调用公共方法获取数据》

开头解决方案

在Vue3项目中,为了提高代码的复用性和可维护性,将获取数据的方法定义为公共方法是常见的做法。这可以通过创建一个单独的工具函数文件、使用Vuex管理状态或者利用组合式API中的setup函数结合provide/inject等方式来实现。

思路一:创建工具函数文件

在src目录下创建一个名为utils的文件夹,在其中创建一个getData.js文件。
javascript
// getData.js
export function fetchData(url) {
return new Promise((resolve, reject) => {
fetch(url)
.then(response => response.json())
.then(data => resolve(data))
.catch(error => reject(error));
});
}

然后在组件中引入并使用:
```javascript

  • {{ item.name }}

import { ref, onMounted } from 'vue';
import { fetchData } from '../utils/getData';

export default {
name: 'MyComponent',
setup() {
const dataList = ref([]);

const loadData = async () => {
try {
const url = 'https://api.example.com/data'; // 替换为实际接口
const data = await fetchData(url);
dataList.value = data;
} catch (error) {
console.error('获取数据失败', error);
}
};

onMounted(() => {
loadData();
});

return {
dataList
};
}
};

</p>

<h2><h2>思路二:使用Vuex</h2></h2>

<p>在store文件夹下的index.js中定义actions和getters等。
```javascript
// store/index.js
import { createStore } from 'vuex';</p>

<p>export default createStore({
  state: {
    dataList: []
  },
  mutations: {
    setList(state, list) {
      state.dataList = list;
    }
  },
  actions: {
    async fetchList({ commit }) {
      try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        commit('setList', data);
      } catch (error) {
        console.error('获取数据失败', error);
      }
    }
  },
  getters: {
    getDataList: state => state.dataList
  }
});
<code>
在组件中使用:
javascript

  
  • {{ item.name }}

import { computed, onMounted } from 'vue'; import { useStore } from 'vuex'; export default { name: 'MyComponent', setup() { const store = useStore(); const dataList = computed(() => store.getters.getDataList); onMounted(() => { store.dispatch('fetchList'); }); return { dataList }; } };

思路三:组合式API中的provide / inject

在父组件中:
```javascript

import { provide, onMounted } from 'vue';
import { fetchData } from './utils/getData';

export default {
name: 'ParentComponent',
setup() {
const dataList = ref([]);
const loadData = async () => {
try {
const url = 'https://api.example.com/data';
const data = await fetchData(url);
dataList.value = data;
} catch (error) {
console.error('获取数据失败', error);
}
};

provide('dataList', dataList);

onMounted(() => {
loadData();
});

return {};
}
};


在子组件中:
javascript

  • {{ item.name }}

import { inject } from 'vue';

export default {
name: 'ChildComponent',
setup() {
const dataList = inject('dataList');

return {
dataList
};
}
};

```
以上就是在Vue3中调用公共方法获取数据的几种思路,可以根据项目的实际情况选择合适的方式。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载