Skip to content
On this page
useHooks tmui.design

请求 useFetch

这个请求与以往的不同,也与之前的fetch不同,我所有的方法正在全部转向hooks并最终代替。

方法

事件名参数返回数据描述
useFetchurl : string, config ?: Ref<Tmui.fetchNetConfigType> | Tmui.fetchNetConfigType | ReactiveEffect<Tmui.fetchNetConfigType>result直接执行即可

config参数注意你可以传递Ref,Reactive等响应变量,也可以直接传递值

ts
// result:返回的结构体:下面所有的字段值均为Ref类型,函数除外。
 {
	loading:boolean,//当前是否处于加载中,加载状态中的话,不会请求后续的请求,比如连续请求2次,第一次不结束,第2次不会请求。
	error:boolean,//当前请求是否有错误
	data:any,//返回的数据,会自动更新。
	pending:boolean,//当前是否从未请求过。
	//重置并刷新数据
	refresh:()=>Promise<boolean>,
	//请求数据
	getData: ()=>Promise<boolean>,
	//这个状态始终是false,需要你自己手动管理这个状态,如果设置为true,getData和自动刷新请求不会再执行。除非执行refresh()或者手动设置为false.
	empty:boolean
}
// config结构体
interface fetchNetConfigType {
	/**
	 * 请求的数据,query,或者body,都可传递对象。自动转换数据格式。
	 */
	data?:any,
	/**
	 * 头部数据。
	 */
	header?:any;
	/**
	 * 请求方式
	 */
	method?:fetchConfigMethod,
	/** 
	* 定义成功的服务器返回的状态码成功的标志
	*/
	statusCode?:number,
	/** 
	 * 从返回的结果读取的数据字段,默认全部返回,
	 * 如果指定了就会读取指定字段
	 * 比如你的结果返回{code,data,msg},如果你指定:['data'],结果集中只返回data数据
	 * 如果是['data',code],结果集中只返回{data,code}
	 */
	pick?:string[],
	/**
	 * 是否监视参数的变化,如果参数发生了变化将会重新发起请求
	 */
	watchRefresh?:boolean,
	/**
	 * 默认为all,当showToast为ture时,选择什么情况下显示请求后的弹出信息。失败,成功,所有请求
	 */
	toast?:'fail'|'success'|'all',
	/**
	 * 是否显示请求后的提示信息框,默认为true
	 */
	showToast?:boolean,
	/**
	 * 读取提示信息的字段,如果读取不到会显示自动的文字。默认为msg,你的接口返回比如{code,data,msg},自动读取的就是接口返回中的msg提示信息。
	 */
	toastKey?:string,
	/**
	 * 是否显示加载框,默认为true。开始请求前显示加载框。
	 */
	showLoading?:boolean,
}

使用

ts
import {useFetch} from '@/tmui/tool/useFun/useFetch'
let token = ref("")
//建议传递响应值,这样改成值后,请求数据即可,参数会自动更新到请求结果中。
let reqConfig = ref<Tmui.fetchNetConfigType>({
	watchRefresh:true,
	data:{
		page:1,
		keyword:3
	},
	method:"GET",
	pick:['data'],
	header:{
		token
	},
	
})

//提醒解析参数时有的人可能会觉得重名与你的参数。其实是可以设置别名的如:const {data:myData} = ....,使用data时就应该使用myData啦。
const {error,getData,data,loading,pending,empty} = useFetch("hostUrl",reqConfig)
// 当然也传递非响应值,比如详情接口等一次性接口。
const reulst = useFetch("hostUrl",{data:{id:"123"}})
// reulst.data.value,或者解析const {data} = reulst,打开值data.value;

// 如果watchRefresh开启了后。改变reqConfig的任意值,会自动刷新数据,不需要再请求。
//比如我修改token值
token.value = "333" ; //注意此时会自动执行getData,并刷新上方所有导出的数据值。
//比如我更改下页码
reqConfig.value.data.page = 2 //自动请求并刷新数据。

//如果不想自动刷新数据,那么就要把watchRefresh:false,
reqConfig.value.data.page = 4;//不会刷新数据了,因为关闭了自动刷新功能,需要手动刷新下。
getData();//手机刷新下数据。data数据会自动更新。页面上的值会自动变化的。

注意事项

返回的结果集为Ref类型访问需要.value