模板文字连接中的条件语句?

我正在进行这样的 API 调用:

posts: (ppp, page) =>
    requests.get(`/wp-json/wp/v2/posts?per_page=${ppp}&page=${page}`)

不过,我并不总是会在每页或每页中传递帖子,所以我只想连接这些变量(如果它们存在)。我在下面尝试过,但似乎无法降低格式:

requests.get(`/wp-json/wp/v2/posts?`${ppp ? `'per_page='${ppp} : `''` `${page} ? `'&page=' ${page}` :''`)


慕无忌1623718
浏览 118回答 1
1回答

www说

除了您的第二个解决方案包含语法错误之外,它也不是最易读的方法......但是你为什么要重新发明轮子呢?您可以使用在客户端和Node.jsURL中都可用的 API :posts: (ppp, page) => {  const url = new URL('/wp-json/wp/v2/posts')  if(ppp) url.searchParams.append('per_page', ppp)  if(page) url.searchParams.append('page', page)  return requests.get(url.href)}  但是,如果由于某种原因不能使用上述解决方案,您仍然可以实现与上述解决方案类似的算法。例如,您可以使用数组:posts: (ppp, page) => {  const urlParams = []  if(ppp) urlParams.push(`per_page=${ppp}`)  if(page) urlParams.push(`page=${page}`)  return requests.get(`/wp-json/wp/v2/posts?${ urlParams.join('&') }`)}  或者更灵活的解决方案:posts: (ppp, page) => {  const urlParams = {    per_page: ppp, //per_page=ppp    page,          //page=page                   //Add more here if you want  }  return requests.get(`/wp-json/wp/v2/posts?${     Object      .entries(urlParams)      .filter(([k, v]) => v) //If value is truthy      .map(e => e.join('=')) //Concatenate key and value with =      .join('&') //Concatenate key-value pairs with &  }`)}  但是,如果你想坚持你的版本,这里有一个固定的例子:requests.get(`/wp-json/wp/v2/posts?${ppp ? `per_page=${ppp}` : ''}${(ppp && page) ? '&' : ''}${page ? `page=${page}` : ''}`)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript