Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 19.04.2021
Сообщений: 44

React и Api: вывод элементов.

05.05.2021, 16:26. Показов 2553. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть API, с помощью которого я вывожу продукты. У меня продукты в API разделены на категории. И у меня есть кнопки категорий к этим продуктам, но они повторяются. Помогите пожалуйста: как сделать чтобы показывались только те товары, на какую категорию я нажимаю по кнопке ?? Добра вам

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import React, {useEffect, useState} from "react";
 
let Products = () => {
 
    let [array, setArray] = useState([]);
 
    let fetchData = async () => {
        let response = await fetch('https://fakestoreapi.com/products');
        let data = await response.json();
        setArray(data);
    }
 
    useEffect(() => {
        fetchData()
    },[])
 
    return(<div>
        {array.map(el => <button key={el.category}>{el.category}</button>)}
        <div>
            {array.map(el =>
                <div>
                    <div><img src={el.image}/></div>
                    <div>{el.title}</div>
                </div>)}
        </div>
    </div>)
}
 
export default Products;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2021, 16:26
Ответы с готовыми решениями:

Undefined API React
Добрый день! Разрабатываю простенькое crud приложение c интеграцией с готовым backend. Возникла проблема: данные, которые отправляются на...

React для Rest APi
Я учусь делать фуллстак приложение. Выбрал реакт. Допустим написал какой-то простейший Rest API. Во всех туториалах Spring Boot...

React асинхронное выполнение запросов к API
Добрый день. Помогите разобраться Необходимо загрузить два набора данных с сервера, потом проделать над ними манипуляции. Я думал,...

4
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
05.05.2021, 17:01
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import React, {useEffect, useState} from "react";
 
let Products = () => {
 
    const [array, setArray] = useState([]);
    const [categories, setCategories] = useState([]);
    const [selectedCategory, setSelectedCategory] = useState(null);
 
    const fetchData = async () => {
        let response = await fetch('https://fakestoreapi.com/products');
        let data = await response.json();
        setCategories(Array.from(new Set(data.map(d => d.category))));
        setArray(data);
    }
 
    useEffect(() => {
        fetchData()
    },[]);
 
    return(<div>
        {categories.map(category => (
          <button key={category} onClick={() => setSelectedCategory(category)}>
            {category}
          </button>
        ))}
        <div>
            {array
             .filter(el => {
               if (selectedCategory) {
                 return selectedCategory === el.category;
               }
               return true;
             })
             .map(el =>
                <div>
                    <div><img src={el.image}/></div>
                    <div>{el.title}</div>
                </div>)}
        </div>
    </div>)
}
 
export default Products;
0
1 / 1 / 0
Регистрация: 19.04.2021
Сообщений: 44
05.05.2021, 18:16  [ТС]
@muxahuk1214, Большое тебе спасибо. Я прошу последнюю просьбу, можешь немножко объяснить код, а именно 12 строчку и с 29 по 32 строку, чтобы понять окончательно, я очень прошу. Еще раз большое спасибо)
0
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
05.05.2021, 18:44
Лучший ответ Сообщение было отмечено Halland как решение

Решение

JavaScript
1
Array.from(new Set(data.map(d => d.category)))
это "типичный" или "один из" способов как сделать массив уникальных значений..

Цитата Сообщение от muxahuk1214 Посмотреть сообщение
data.map(d => d.category)
создаёт массив из категорий, аля ['cat1', 'cat2', 'cat1']

Цитата Сообщение от muxahuk1214 Посмотреть сообщение
new Set(data.map(d => d.category))
создаёт новый элемент класса Set, одно из "свойств" сета - он не дублирует значения, т.е. после этого шага в сете будут уникальные значения 'cat1' и 'cat2'

Цитата Сообщение от muxahuk1214 Посмотреть сообщение
Array.from(new Set(data.map(d => d.category)))
ну и в конце - создаём массив из сета.. Array.from как аргумент принимает любой итерируемый объект и создаёт из него массив.. т.е. получаем ['cat1', 'cat2']

Цитата Сообщение от muxahuk1214 Посмотреть сообщение
.filter(el => {
               if (selectedCategory) {
                 return selectedCategory === el.category;
               }
               return true;
             })
что же касаемо этого - см. https://developer.mozilla.org/... ray/filter

в частности, если у нас есть selectedCategory и значение truethy, то сравниваем его с категорией элемента (если равны, то элемент остаётся, если нет - элемент убирается), ну и если selectedCategory не задано - то ничего не убираем из массива...
1
1 / 1 / 0
Регистрация: 19.04.2021
Сообщений: 44
05.05.2021, 20:52  [ТС]
muxahuk1214, Большое спасибо))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2021, 20:52
Помогаю со студенческими работами здесь

Возможно ли развернуть ASP.NET Core Web API + React JS на виртуальном хостинге?
Сейчас у меня VPS. А возможно ли развернуть на обычном виртуальном хостинге? И будет ли это проще?

Отсортированный вывод элементов Hashtable с использованием Stream API
Как сделать отсортированный вывод элементов коллекции с помощью Stream API (по заданию надо)? Сортировка по ключу. public class...

React и вывод елементов
Я беру ресурс и вывожу данные через fetch. Дело в том, что у меня выводятся сразу все элементы с моего ресурса. Есть вопрос, как сделать...

JS React вывод массива списком
В чем косяк? &lt;script type=&quot;text/babel&quot;&gt; const name = ; class Test extends React.Component { constructor(props) { ...

React JS. Вывод с html тегами
Имею небольшой скрипт на реакте. с помощью ajax получаю данные (текст), которые содержат html код. вывод строк такой: &lt;div...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru