|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|
Компоненты и пропсы08.11.2020, 16:44. Показов 2673. Ответов 28
Метки нет (Все метки)
Добрый день!
У меня есть массив с названиями животных, это выводится на экран с помощью картинок, я могу отсортировать массив картинок по группам животных - это работает, у меня один стэйт для этого создан. Теперь мне надо чтобы при клике на картинку - картинка менялась на текст описание животного. Говорят что это надо делать с помощью нового стейта и компонентов, наверное и пропсы надо использовать, я пока этого не понимаю. Может кто-нибудь знает как это можно сделать?
0
|
|
| 08.11.2020, 16:44 | |
|
Ответы с готовыми решениями:
28
Не могу передать в пропсы состояние из хука
В один файл вывести нулевые компоненты, в другой - четные компоненты исходного |
|
|
|
| 08.11.2020, 17:53 | |
|
ynxarmed, Добрый день.
То есть по клику на любой элемент (картинку) - он должен исчезнуть и на его месте появиться текст? Если так - то через состояние делать можно так: элемент перечисления представить в виде компонента в рамках которого описать функцию клика с изменением внутреннего состояния; на основе состояния уже реализовать условный рендеринг
0
|
|
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|||||||||||
| 08.11.2020, 20:58 [ТС] | |||||||||||
|
Да, вы правильно поняли, но я не могу никак пока это реализовать, вот мой код:
Знаю что надо добавить что-то вроде этого в отдельный файл и соединить между собой, чтобы работало и как-то вызвать функцию по клику, но пока я запутался, тут конечно код неправильный второго файла:
0
|
|||||||||||
|
|
|||||||||||
| 08.11.2020, 21:11 | |||||||||||
|
ynxarmed, Попробуйте по следующему подходу.
0
|
|||||||||||
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|
| 08.11.2020, 21:22 [ТС] | |
|
Для меня это пока не понятно, то есть Вы не создавали новый State?
0
|
|
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|
| 08.11.2020, 23:44 [ТС] | |
|
Пока даже не знаю что и как соединить, я только третий день знакомлюсь с реактом.
0
|
|
|
|
||||||||||||||||
| 09.11.2020, 01:54 | ||||||||||||||||
|
ynxarmed, У вас уже есть компонент Animals
Просто замените в нем
Кликните здесь для просмотра всего текста
Суть в том, что для элемента списка у вас отдельный компонент, в котором есть свое состояние
0
|
||||||||||||||||
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
||||||||||||||||
| 09.11.2020, 11:53 [ТС] | ||||||||||||||||
|
Я не понимаю, я так сделал, ничего не работает:
Первый файл:
У меня сам главный файл называется Animal.tsx, как я в него же могу добавить компонент с таким же названием <Animal /> ? Ну сюда по вашему примеру вы добавляете так в главный файл:
В моем понимании это выглядит так: Есть главный файл, например Animal.tsx Есть второй файл, например AnimalDescr.tsx - он же и есть компонент, в котором есть какая-либо функция. И мы помещаем этот компонент в первый файл Animal.tsx, и он внутри первого файла выглядит так: <AnimalDescr />
0
|
||||||||||||||||
|
|
||||||||
| 09.11.2020, 12:16 | ||||||||
|
В данном случае вы описываете компонент Animals, который представляет компонент со списком животных и небольшой фильтрацией. Для отображения каждого животного описан отдельный компонент - Animal, в котором также имеется некая логика (смены состояний, например). Как корректно использовать 2 компонент в 1 - просто описать вызов, как вы это уже сделали, но также импортировать компонент import Animal from './path'; // путь до файла с компонентом (если располагается в той же директории, то просто './animal')
0
|
||||||||
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|
| 09.11.2020, 15:17 [ТС] | |
|
Я сделал так, не знаю как теперь правильно сделать эту функцию, добавил в массив еще один объект changer: boolean, который будет менять картинку на текст:
0
|
|
|
|
|||
| 09.11.2020, 15:26 | |||
|
ynxarmed, Прикрепите, пожалуйста, полный код ваших 2 компонентов.
Добавлено через 5 минут Можете сделать по следующему принципу: Название файла = название компонента, который экспортируется как основной (export default)
0
|
|||
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|
| 09.11.2020, 15:37 [ТС] | |
|
Я уже ничего не понимаю, хочу просто эту фунцкию сделать, которая на картинке, чтобы она работала при нажатии true or false.
0
|
|
|
|
|
| 09.11.2020, 15:49 | |
|
ynxarmed, Прочитайте документацию реакта, разберитесь с понятиями компонент и состояние в таком случае.
По итогу у вас должно быть 2 компонента: 1 для отображения и фильтрации списка, 2 для отображения информации. Во 2 компоненте вы управляете видимостью описания. Если у вас ничего не получится, то вечером я скину вам рабочий пример.
0
|
|
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|
| 09.11.2020, 15:54 [ТС] | |
|
Читаю документацию, не могу всё это воссоздать в своей программе.
0
|
|
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|
| 09.11.2020, 17:14 [ТС] | |
|
Я думаю вообще надо начать новую программу, в которой будут и компоненты и несколько хуков и пропсы, я не понимаю взаимодействие между хуками, компонентами и пропсами.
0
|
|
|
|
|
| 09.11.2020, 17:56 | |
|
ynxarmed, Компоненты - некие независимые части приложения, согласно документации реакта. Пропсы - (название объекта) данные для инициализации компонента.
По указанной ссылке изучите документацию, не удаляйте ваш старый код, просто обновите его позже, когда у вас будет полная картинка в голове.
0
|
|
|
17 / 3 / 0
Регистрация: 21.08.2010
Сообщений: 230
|
|||||||||||
| 09.11.2020, 18:08 [ТС] | |||||||||||
|
Вот я для теста сделал новых два файла:
1.
Добавлено через 1 минуту А то что вы прислали я уже читал, наверное не углубился в это и до конца не понял, надо еще пройтись.
0
|
|||||||||||
|
|
||||
| 09.11.2020, 18:22 | ||||
|
0
|
||||
| 09.11.2020, 18:22 | |
|
Помогаю со студенческими работами здесь
20
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
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, то после закрытия окошка. . .
|