【发布时间】:2026-02-05 02:15:01
【问题描述】:
我在 React 中有一个下面的函数,可以根据 localstorage 中的内容获取形成 api url 的键,这个函数非常完美,但我想对其进行优化,并有一个 map 函数而不是重复。
getFiltersFromLocal() {
let formurl = (localStorage.getItem(videoUrl) ? '&' + 'videoUrl=' + localStorage.getItem(videoUrl) : '')
+ (localStorage.getItem(tvenName) ? '&' + 'enName=' + localStorage.getItem(tvenName) : '')
+ (localStorage.getItem(tvGender) ? '&' + 'tvGender=' + (localStorage.getItem(tvGender)) : '')
+ (localStorage.getItem(tvStatus) ? '&' + 'tvStatus=' + (localStorage.getItem(tvStatus)) : '')
return formurl
}
为了优化这一点,我尝试了以下但没有运气。
getFiltersFromLocal() {
const localfilterdata = {
"data": [
{
"keysToCheck": [videoUrl,tvenName,tvGender,tvStatus,tvidFrom,tvidTo,tvsortorderFrom,tvsortorderTo,tvstartFrom,tvstartTo,tvendFrom,tvendTo,tvsearch]
},
{
"apiparams": ["videoUrl=","enName=","tvGender=","tvStatus=","idFrom=","idTo=","sortOrderFrom=","sortOrderTo=","startDateFrom=","startDateTo=","endDateFrom=","endDateTo=","search="],
}
]
}
localfilterdata.data.map(k => {
let formurl = localStorage.getItem(k.keysToCheck) ? '&' + k.apiparams + localStorage.getItem(k.keysToCheck) : ''
return formurl
})
}
注意:这个函数会根据localstorage中的item形成url,并附加到url中。下面的示例网址
https://example.com/getTvList?size=20&page=1&tvStatus=INACTIVE&enName="sample"
使用如下函数:
url = FETCH_URL + '?size=' + stateData.pageSize + '&page=' + stateData.currentPage + this.getFiltersFromLocal()
【问题讨论】:
-
您好,根据您的示例,您可能需要映射
localfilterdata.data.keysToCheck,例如localfilterdata.data.map((k, index) =>。然后使用索引,您可以将k.apiparams的引用替换为localfilterdata.data.apiparams[index]。 -
@melc 感谢您的回复,对不起,我无法联系到您。如果可能的话,你能分享一下小小提琴之类的吗?
标签: javascript arrays reactjs ecmascript-6 local-storage