0
点赞
收藏
分享

微信扫一扫

uniapp封装请求(uni.request)与vuex进行状态管理

君心浅语 2022-02-07 阅读 76

 有段时间没有用过vue、vuex以及uniapp了,避免手生,于是便写下如下一个小demo。

 

1.创建一个发送请求的js文件(http.js)

export default async function http({url,data,method="POST"}){
	let baseUrl= 'https:/***.bspapp.com'//这里用的uni免费的云函数URL
	return new Promise((resolve,reject)=>{//使用Promise返回数据
		uni.request({
			url:baseUrl+url,
			method,
			data,
			success(res) {
				resolve(res.data)
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

2.配置一个请求的js文件(fetch.js)

import http from "../http/index.js"

export async function fetchTags() {
	return  http({
		url:'/getTags',
		data:{}
	})
}

上述两个文件目录如图所示:

我在这里采取使用VueX这个状态管理工具进行对数据进行处理与收集,多年的代码经验告诉我,使用状态管理对数据进行管理,后期对业务进行维护时会非常方便。

3.开启vuex状态管理

创建store

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);//vue的插件机制

// 导入数据请求的方法
import { fetchTags } from '../util/fetch/index.js'

//Vuex.Store 构造器选项
const store = new Vuex.Store({
    state:{//存放状态
		"tabList":[]
    },
	mutations:{
		getTab(state){
			//将数据存入store中 当state中tabList有数据时不发请求,避免重复请求
			state.tabList.length || fetchTags().then(res=> state.tabList = res) 
		}
	}
})
export default store

4.在main.js中导入store以用来使用vuex

 5.在需要使用数据的vue页面中获取vuex中的数据

<script>
	import {
		mapMutations,
		mapState
	} from 'vuex' //引入mapMutations方法与mapState数据

    export default {
		data() {
			return {
			}
		},
        created() {
			this.getTab()
        },
		computed: {
			...mapState({
				tabList: state => state.tabList,
			})
		},
		methods: {
			...mapMutations(['getTab'])
		}
	}

</script>

 如图所示,数据确实进入vuex中了。

 

举报

相关推荐

0 条评论