|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
||||||
Не компилируется компонент02.02.2024, 14:46. Показов 2070. Ответов 22
Метки нет (Все метки)
Здравствуйте. Я новичок в ReactJS, только изучаю его. Я написала небольшой компонент, но при компилации через webpack babel получаю ошибку и не понимаю, то неправильно я написала ? Подскажите, пожалуйста, мне.
Привожу код моего компонента:
0
|
||||||
| 02.02.2024, 14:46 | |
|
Ответы с готовыми решениями:
22
Не компилируется компонент SpeechLib_TLB
не компилируется задание: компонент связности графа - кто разберется |
|
Молодой техлид)
|
|
| 02.02.2024, 15:52 | |
|
функция row возвращяет объект JS, а имя поля объекта не могут быть с использованием оператора точка(как и написано в ошибке, можно использовать запятую), row должна вернуть React елемент, для этого можно поместить свой код в React.Fragment, а во вторых вызов функции должен быть с использованием this
0
|
|
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
||||||
| 02.02.2024, 18:39 [ТС] | ||||||
|
Благодарю вас за ответ. Я нашла как поправить свой код. Но возникла новая проблема у меня:
при клике на кнопку + которая должна добавлять строку к таблице у меня ничего не происходит, а в консоли браузера я вижу следующую ошибку: Код моего компонента:
Мне больше нравился старый способ. Он для меня нагляднее и привычнее. Возможно ли его использовать? Как починить тогда мой пример? Чтобы добавлялась строка к таблице ? Помогите, пожалуйста.
0
|
||||||
|
Молодой техлид)
|
||
| 02.02.2024, 19:25 | ||
|
На счет ошибки то это просто не внимательность, у вас нет переменной с именем data.
0
|
||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|||||||||||
| 05.02.2024, 18:09 [ТС] | |||||||||||
|
Благодарю вас за ответ. Действительно по невнимательности не заметила ошибки. Поправила и всё заработало.
Но есть ещё один вопрос. Не получается у меня вызвать метод моего компонента, когда в другом компоненте отработала функция, забрала с сервера данные. И вот мне часть этих данных нужна в моём компоненте. Я пытаюсь сделать это так: Код моего компонента:
Похоже он не видит этот метод, может надо как-то сделать его публичным? Подскажите, пожалуйста.
0
|
|||||||||||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
||||||
| 05.02.2024, 19:07 [ТС] | ||||||
|
Нашла как это сделать. Надо было метод пометить как static.
Остался ещё один вопрос: как мне навесить событие, чтобы при выборе файла пользователем у меня в модели обновлялось соответствующая запись, поле path ? В этом методе я добавляю новую строку к таблице, и в ней я оставляю поле path пустым. Вот мне нужно чтобы при выборе пользователем файла, моя модель обновилась внутри компонента и я вызвала нужные мне методы тогда. Как мне это сделать ? У меня может быть одновременно несколько файлов, и нужно чтобы обновлялся path соответствующей строки в таблице.
0
|
||||||
|
250 / 184 / 58
Регистрация: 12.03.2021
Сообщений: 1,043
|
||
| 06.02.2024, 09:26 | ||
|
что значит "при выборе пользователем файла"? он вгружает его? он скачивает? о каких файлах вообще речь идёт? какая модель внутри компонента обновилась? какие методы нужные? в целом, из всего этого могу сказать так - когда пользователь выбрал файл, нужно обновить модель и вызвать методы
0
|
||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|||||||||||
| 07.02.2024, 15:57 [ТС] | |||||||||||
|
благодарю, что отвечаете мне. Я нашал как сделать то что спрашивала, но возникло у меня новое затруднение.
Я в своей компоненте сделал статический метод, чтобы его можно было вызвать из другого компонента, но не учла что мне не будет доступны никакие переменные моего компонента и указатель this. Долго искала как же сделать такой метод, чтобы он как публичный был, его можно было вызвать у моего класса-компонента, например таким образом:
Я узнала что для это используют в функциональных компонентах useEffect. Но его нельзя использовать в классе компоненте. Как быть тогда? Я бы не хотела переделывать свой компонент на функциональный, так как мне привычнее код читать через классы. Код функциональных компонентов как-то не очевиден для меня и запутан. Как раньше обходились без useEffect ? Как решали такую проблему ?
0
|
|||||||||||
|
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
|
||||
| 07.02.2024, 16:53 | ||||
|
Т.е. пока из твоих высказываний можно понять что ты ни с чем работать не умеешь.
0
|
||||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|
| 07.02.2024, 17:04 [ТС] | |
|
скажите, пожалуйста, какие вы видите проблемы в моём классе ? Я буду только рада вашему совету, чтобы улучшить мой код.
Может мне следует что-то почитать, чтобы я умела хорошо писать код ?
0
|
|
|
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
|
|||
| 07.02.2024, 17:25 | |||
![]() А для некоего совета - от тебе желателен тестовый пример. Его можно было бы запустить у себя и на нем предложить другие альтернативы. Добавлено через 3 минуты
0
|
|||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|||||||||||
| 07.02.2024, 20:11 [ТС] | |||||||||||
|
Подскажите мне, пожалуйста, как наилучшим образом оптимизировать мой код ? Я буду очень благодарна вам.
Расскажу подробнее о компонентах: 1) есть большая форма со множеством полей для создания лота в аукционе 2) я пишу небольшой компонент, который позволяет подгружать документы (файлы world,pdf) компонент мой должен уметь делать автосохранение, на случай если пользователь закрыл вдруг вкладку. Автосохранение лота уже есть на основной форме, куда я внедряю свой компонент. И вот я хотела сначала, чтобы когда произошло автосохранение, то вызвался и метод у моего компонента и я могла тоже асинхронно отправить документы на сервер. Или же я подумала отслеживать состояние переменной lotId, чтобы когда произойдёт автосохранение лота и будет присвоен новому лоту Id из БД, то я получу этот Id и по нему сохраню документы. Приведу полный код моего компонента на сегодняшний день моих усилий)
Внешне он пока не доделан, это я потом сделаю ему. Буду рада вашим советам по улучшению кода и его оптимизации)
0
|
|||||||||||
|
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
|
||||||||
| 08.02.2024, 09:17 | ||||||||
|
Т.о. произойдет рендер дочернего компонента и он сможет выполнить нужные действия. tiny developer, учись от "объяснений" переходить к тестовым примерам. ![]() Добавлено через 32 минуты tiny developer, поскольку я не использую классовые компоненты, покажу тестовый пример на функциональных. Твой компонент, в моем примере - Test.
0
|
||||||||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|
| 08.02.2024, 16:29 [ТС] | |
|
спасибо вам большое! Я очень рада получить и ответ и пример кода)
0
|
|
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
||||||
| 16.02.2024, 19:51 [ТС] | ||||||
|
Здравствуйте. Я снова к вам за помощью и советом пришла) написав много кода своего компонента и наполовину уже его сделав, я пришла к выводу переписать на функциональный компонент. Так как мне нужны были хуки внутри моего компонента, а они не доступны. С функциональным компонентом у меня возникли трудности. Вот про них и хочу я спросить. Я решила использовать TypeScript для написания компонента.
Я бы хотела ещё раз напомнить что я хочу получить, что за компонент разрабатываю: Это будет у меня таблица для загрузки файлов на сервер. Каждая строка таблица - отдельный файл. В начале работы компонента мы не имеем ни одной строки в таблице. Внизу таблицы есть кнопка + которая отвечает за добавление строки в таблицу. Пи клике по ней добавляется динамически строка в таблицу с input для заполнения. Покажу пример на картинке: В колонке действия мы имеем две кнопки: удалить строку из таблицы и залить файл на сервер. При клике на кнопку залить файл на сервер, мы асинхронно сохраняем файл и как только получим успешний ответ от сервера, то строка таблицы должна измениться на другой вид: Таким образом мы после сохранения документа на сервер имеем возможность изменить все его поля, если нужно. Я придумала это реализовать следующим образом:
И поля документа у меня имеют сложный тип - IMode. Это для того чтобы внешний вид строки поменялся после загрузки файла на сервер. Как вы думаете хороший способ я нашла или можно сделать как-то лучше и удобнее ? У меня беда, что при клике на кнопку + у меня ничего не происходит и строка не добавляется в таблицу. Я вызываю метод addTableRows и вижу что он отработал но ничего визуально не изменилось. Что я не сделала? Использовать здесь state как я поняла нельзя, он и недоступен. А как мне заставить обновиться компонент на странице? И ещё вопрос. Как можно ещё реализовать выбор файла ? Мне подсказали, что можно когда пишешь на react обойтись без jquery и это приветствуется. Как тогда мне реализовать выбор файла? Ведь у меня такая кнопка будет не одна, а для каждой строки своя кнопка. Поэтому решение через useRef не подойдёт. Очень жду ваших ответов!
0
|
||||||
|
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
|
|||||
| 16.02.2024, 20:26 | |||||
![]() useRef не для того чтобы его пихать в каждый след. ![]() Общий совет - если не не стоит замахиваться на что-то сложное если не знаешь основ. Начни с простого. От него, шаг за шагом, дойдешь до сложного. Добавлено через 1 минуту
0
|
|||||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|
| 16.02.2024, 21:30 [ТС] | |
|
Спасибо, что вы отвечаете))
0
|
|
|
Молодой техлид)
|
|||||||||||||
| 17.02.2024, 02:26 | |||||||||||||
|
tiny developer, Первый совет, используйте декомпозицию компонентов, например, компонент Row можно сделать отдельным компонентом это уменьшит сложность кода и повысит читаемость.
На счет работы с файлами input[type=file] немного отличается от input[text] это не контролируемый компонент, т.е. ему не получится value, только прочитать (просто нужно иметь это ввиду)
0
|
|||||||||||||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
||||||||||||||||
| 21.02.2024, 08:17 [ТС] | ||||||||||||||||
|
Здравствуйте ребята. Очень благодарна вам за ответы. Переписала код компонента, вынесла Row в отдельный файл.
Но столкнулась с одной трудностью и никак не знаю как её разрешить.. Почему-то у меня не перерисовывается компонент при callback после fetch... Приведу свой код: файл table.tsx
0
|
||||||||||||||||
|
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
|
||||
| 21.02.2024, 09:36 | ||||
|
- не видно изменений в стейте - не видно изменений в пропсах Добавлено через 2 минуты item - такое конечно никто не "увидит"...У тебя должна полностью обновиться ссылка на объект, а не просто измениться некие "глубокие" свойства. Добавлено через 31 минуту
0
|
||||
| 21.02.2024, 09:36 | |
|
Помогаю со студенческими работами здесь
20
Программа компилируется в Borland 6.0 но не компилируется в Visual Studio 2008 Заголовочный файл, который компилируется в VS2017, не компилируется в Qt Компилируется в С++ bulder 6.0 но не компилируется в VS 2010 express В формате .cpp код компилируется, а в .c не компилируется
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
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, то после закрытия окошка. . .
|