Dokonuję takich połączeń API:

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

Nie zawsze zamierzam przechodzić na słupkach na stronie lub na stronie, więc chciałbym tylko połączyć te zmienne, jeśli istnieją. Próbowałem poniżej, ale nie mogę wydawać się formatowania w dół:

requests.get(`/wp-json/wp/v2/posts?`${ppp ? `'per_page='${ppp} : `''` `${page} ? `'&page=' ${page}` :''`)
2
user13286 22 marzec 2020, 01:31

1 odpowiedź

Najlepsza odpowiedź

Poza tym, że drugie rozwiązanie zawiera błędy składniowe, nie jest to również najbardziej czytelny sposób na to ...

Ale dlaczego próbujesz uruchomić koło?

Możesz użyć API URL, który jest dostępny zarówno Client-side i W Node.js:

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)
}  

Jednakże, jeśli nie możesz korzystać z powyższego rozwiązania z jakiegoś powodu, nadal możesz zaimplementować podobny algorytm, który działa jak powyższe rozwiązanie. Na przykład możesz użyć tablicy:

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('&') }`)
}  

Lub jeszcze bardziej elastyczne rozwiązanie:

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 &
  }`)
}  

Ale jeśli chcesz trzymać się wersji, oto stały przykład tego:

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

3
FZs 25 marzec 2020, 07:47