vueUse useFetch() + useUrl()을 사용하여 URL로 작업하는 더 좋은 방법
7662 단어 vuejavascripttypescriptvuehook
URL을 다룰 때의 문제:
다음 URL을 고려하십시오.
"https://somedomain.com/api/v1/entity/:id/subentity?search=query&sort=property&limit=100&page=1&filters=filter1,filter2,filter3#someHash"
이 URL은 다음과 같이 구성되는 많은 부분이 있습니다.
https://somedomain.com
/api/v1/entity/:id/subentity?search=query&sort=property&limit=100&page=1&someFilters=filter1,filter2,filter3#someHash
/:id/'
search
sort
limit
page
filters
#someHash
쿼리 매개변수 또는 경로 변수를 변경하기 위해 문자열 보간법 또는 사용자 지정 코드만 사용하는 REST API/링크 작업은 매우 번거롭고 지루할 수 있습니다.
특히 VueUse에서 useFetch() 후크를 사용할 때 axios와 같은 라이브러리와 유사한 (매개변수, 경로 변수 등)을 처리할 내장 방법이 없기 때문입니다.
해결책:
이 문제를 편리한 방법으로 해결하는 Vue.js 구성 API 후크vue-useUrl를 만들었습니다.
useUrl()
를 사용하여 이전 예제를 다시 실행해 보겠습니다.const { url, queryParams, pathVariables, hash, path, disableCSV } = useUrl({
path: '/api/v1/entity/:id/subentity',
pathVariables: {
id: 1001
},
queryParams: {
search: 'query',
sort: 'propery',
limit: 100,
page: 1,
filters: [ 'filter1', 'filter2', 'filter3' ]
},
hash: 'someHash'
},
'https://somedomain.com')
console.log(url.value) // return https:/somedomain.com/api/v1/entity/0/subentity?search=query&sort=propery&limit=100&page=1&filters=filter1,filter2,filter3#someHash
쿼리 매개변수, 경로 변수, 해시, 경로를 자바스크립트 변수로 사용할 수 있으며 멋진 점은 이 변수의 값을 변경하면 URL 재구축이 트리거되고
url
항상 쿼리 변경 사항을 반영한다는 것입니다.useFetch()와 통합:
import { useFetch } from "@vueuse/core"
import { useUrl } from "vue-useurl"
export function useApi() {
const { url, queryParams, pathVariables, path } = useUrl({
path: '/users/random_user',
queryParams: {
size: 10
},
pathVariables: {},
hash: ''
},
'https://random-data-api.com/api')
const { isFetching, error, data } = useFetch<any[]>(
url,
{ initialData: { results: [] }, refetch: true }
)
.get()
.json()
return {
isFetching,
error,
data,
url,
queryParams,
pathVariables,
path
}
}
NPM Package
Github repo
Reference
이 문제에 관하여(vueUse useFetch() + useUrl()을 사용하여 URL로 작업하는 더 좋은 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rainxh11/a-better-way-to-work-with-urls-using-vueuse-usefetch-useurl-4309텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)