Как я могу передать массив в URL

#reactjs #api #url #saga

#reactjs ( реакция ) #API #url — адрес #сага

Вопрос:

Я передаю массив категорий по URL

  const data = {
      page: 1,
      limit: limit,
      categories : catIdArray, //["5f3a495c47c36c8e926fc85d"]
    };


props.onPagination(data);

  

но получение такого результата:

 '{url}/leads?page=1amp;limit=15amp;categories=5f3a495c47c36c8e926fc85d'
  

Я хочу передать этот массив как array. Не могли бы вы, пожалуйста, подсказать мне, как я могу передать массив по URL?

URL — адрес :

 const url = `${LEADS}?page=${action.payload.page}amp;limit=${action.payload.limit}amp;categories=${categories ? categories : ''}`;
  

Комментарии:

1. Можете ли вы поделиться минимальным примером вашего кода?

2. Я просто хочу знать, как я могу отправить массив по URL. Я показал консольный вывод URL-адреса в вопросе.

Ответ №1:

Вместо того, чтобы передавать массив напрямую, сначала сделайте его stringify.

Код станет:

 const data = {
  page: 1,
  limit: limit,
  categories : JSON.stringify(catIdArray), //["5f3a495c47c36c8e926fc85d"]
};


props.onPagination(data);
  

Это передаст массив так, как вы хотите.

Комментарии:

1. Пожалуйста, примите ответ, если это ответило на ваш вопрос. Это мотивирует нас писать больше ответов.

Ответ №2:

Это потому, что у вас есть только один элемент в массиве, который "5f3a495c47c36c8e926fc85d"

Я создал этот пример, который содержит список категорий в URL. https://codesandbox.io/s/modest-drake-4xy0i?file=/src/App.js

Ответ №3:

Вы можете воспользоваться URLSearchParams объектом JavaScript, который позволяет вам определять сложную цепочку строк запроса

 const data = {
      page: 1,
      limit: 15,
      categories : ["5f3a495c47c36c8e926fc85d"],    
};

const search = new URLSearchParams();
for(let key in data) {
    search.append(key, data[key]);
}

console.log(search.toString());