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

 有段时间没有用过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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值