#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());