Ula
компонент App не принимает это const dispatch = useDispatch();, говорит please ensure the component is wrapped in a <Provider>. Понятное дело App не будет в Provider. Мне необходимо выполнять экшен на самом верхнем уровне. Я могу конечно создать враппер внутри провайдера, но как-то теряется смысл хуков и опять появляется новый уровень вложенности
Ula
Весь App в провайдер оберни
Это получается будет еще один компонент, в котором будет провайдер, а в нем app?
Ula
Ula
Нет, внутри App оберни всё в провайдер
Так сейчас так и есть. Он ругается на dispatch, говорит, что он должен быть внутри провайдера
xeleos
как быть если надо обработать catch при ошибке запроса? без await я бы просто написал .catch((error)=>error);, а при await? а сори, это ж совсем вопрос не про реакт.
Mihail
Так сейчас так и есть. Он ругается на dispatch, говорит, что он должен быть внутри провайдера
сорри, я туповат, не так понял где рендеришь App в ReactDOM.render оберни его в провайдер типа ReactDOM.render((<Provider><App /></Provider>), твой рут)
Ula
надо написать этот код в Main
Ну вот эти вот дополнительные компоненты это же противоествественно хукам, не?
Eduard
подскажите, как заматчиться на квери параметр?
Павел
Ну вот эти вот дополнительные компоненты это же противоествественно хукам, не?
не понимаю, о чем ты. Дополнительных компонентов не нужно, просто нужно понимать, в каком месте какой код писать. У тебя просто логическая ошибка. Ты пытаешься писать код вне контекста, где dispatch доступен
Павел
а это вообще легально? 🙂
да, я всегда так делаю. А уже внутри можно будет писать любой код
Eduard
как сделать, чтобы id в матч поподал?
Павел
Можно все провайдеры приложения объявить и описать в том же файле, где ты ReactDOM используешь - это удобнее, тогда во всех файлах у тебя будет доступен контекст всех провайдеров
Павел
как сделать, чтобы id в матч поподал?
в какой match он должен попадать? Неясно, что ты имеешь в виду
Eduard
в какой match он должен попадать? Неясно, что ты имеешь в виду
я просто хочу получать цифру, которую введут вместо id в ссылке, которая заканчивается на ?count=:id
Ula
Спасибо!
Александр
я просто хочу получать цифру, которую введут вместо id в ссылке, которая заканчивается на ?count=:id
Руками парсить location.search, точнее библиотекой какой-либо или через URLSearchParams
Павел
я просто хочу получать цифру, которую введут вместо id в ссылке, которая заканчивается на ?count=:id
Ты испльзуешь https://github.com/reactjs/react-router-redux ? Там в документации пример есть
Eduard
Руками парсить location.search, точнее библиотекой какой-либо или через URLSearchParams
потому что другого способа нет? или просто это первое что на ум приходит?
Александр
потому что другого способа нет? или просто это первое что на ум приходит?
Потому что реакт роутер не занимается разбором query параметров
Павел
потому что другого способа нет? или просто это первое что на ум приходит?
Выше написал другой способ. Там есть библиотечный селектор, который вернет тебе необходимое значение
Павел
Deprecated пакет, да и редукс тянет:)
Там же написано, какой вместо него использовать…
Павел
Еще бы без редукс...
Тогда вот эта библиотека занимается парсингом строк и может легко выделить параметр из строки: https://www.npmjs.com/package/qs
Павел
Да я то знаю как это делается
похоже было на вопрос
Александр
Просто вы сразу решение под redux озвучили, в исходном вопросе не было слов вроде что он в стеке присутствует.
Павел
Просто вы сразу решение под redux озвучили, в исходном вопросе не было слов вроде что он в стеке присутствует.
предлагаю перейти на «ты», если не возражаете. Предложил то, что использую сам. redux - неплохо справляется со своими задачами менеджера данных.
Александр
предлагаю перейти на «ты», если не возражаете. Предложил то, что использую сам. redux - неплохо справляется со своими задачами менеджера данных.
Я не против, можем перейти. Что касается редакса как неплохого менеджера состояния - то тут можно не согласиться, но сейчас наверное не лучший момент очередную волну холливара начинать.
$$$$$$$
Есть такие кто активно хуки юзает ?
Павел
Я не против, можем перейти. Что касается редакса как неплохого менеджера состояния - то тут можно не согласиться, но сейчас наверное не лучший момент очередную волну холливара начинать.
любое решение может быть как «хорошим» в опытных руках, так и полным провалом в руках делитанта. Меня это решение не подводило, но прекрасно понимаю, что существует как минимум еще 2 вполне достойных альтернативы
Павел
Есть такие кто активно хуки юзает ?
я активно использую - очень доволен. Проблем решает больше, кода меньше. Можно переисплоьзовать. Думаю, что если еще не используешь активно - самое время начать - очень рекомендую
Александр
я активно использую - очень доволен. Проблем решает больше, кода меньше. Можно переисплоьзовать. Думаю, что если еще не используешь активно - самое время начать - очень рекомендую
Да я уже перешёл на другое решение, на новых проектах без редакса. По мне так лучше стало, но соглашусь с тем что его надо уметь готовить, а это мало где получалось из виденного мной в проектах.
$$$$$$$
а ещё такой вопрос , где вы логику приложения пишите ?
Павел
Да я уже перешёл на другое решение, на новых проектах без редакса. По мне так лучше стало, но соглашусь с тем что его надо уметь готовить, а это мало где получалось из виденного мной в проектах.
У меня в 3х проектах было отлично приготовлено. Там все дело в правильной архитектуре, которую, почему-то, не описывают в документации, а должны были бы
Александр
а ещё такой вопрос , где вы логику приложения пишите ?
Смотря какую логику... что касается ui-поведения вполне как раз засовывается в хуки
$$$$$$$
Бизнес логику
Александр
Бизнес логику
В стейт менеджере например
Павел
а ещё такой вопрос , где вы логику приложения пишите ?
да, если логика относится только к этому компоненту - лучшее место для нее - хуки. Если это бизнесс логика работы с данными, то лучше выносить ее в отельное место (вне react и компонентов). Я для этих целей испльзую redux, но можно и другие менеджеры данных (состояния) использовать
Александр
У меня в 3х проектах было отлично приготовлено. Там все дело в правильной архитектуре, которую, почему-то, не описывают в документации, а должны были бы
Согласен, но увы сам я не видел хорошо приготовленного редакса, а в последствии сам забросил попытки (в моем случае пытки) выстроить нормальную архитектуру с ним.
$$$$$$$
Давай
Александр
могу ссылку на видео прислать с архитектурой, которая очень хорошо себя зарекомендовала
Делитесь, посмотреть интересно будет, хотя сам едва ли вернусь к нему
Александр
https://www.youtube.com/watch?v=ad64crtFR-g
Спасиб, может понятнее станет почему у меня не пошло
Павел
Спасиб, может понятнее станет почему у меня не пошло
могу угадать, что потому что логика одной и той же сущности хранилась в разных местах - это крайне неудобно
Александр
Павел
Если всю логику одной сущности хранить в одном месте (это можно называть доменной структурой, хотя иногда под этим термином понимают и нечто другое), то редакс превращается в невероятно удобный инструмент
Александр
И вот это размазывание логики по акшенам и редьюсерам, у меня оно более менее все заработало только после статической типизации всего этого дела, но впечатление осталось в итоге не очень
Павел
Я бы на первое место вынес многословность редакса (бойлерплейта)
многословность компенсируется понятностью. Понятность важнее лаконичности в больших и средних проектах. В прочем, если маленький собираешься поддерживать долго, то и там понятность будет иметь первостепенное значение
Павел
И вот это размазывание логики по акшенам и редьюсерам, у меня оно более менее все заработало только после статической типизации всего этого дела, но впечатление осталось в итоге не очень
1. Редюсеры используются только для сохранения данных 2. Экшены испльзуются только для описания того, что должно произойти. Из описания экшена всегда должно быть очевидно, какое изменение и каким образом должно быть произведено 3. Более менее сложная логика должна быть упакована в thunk-экшены или в saga-экшены
Александр
1. Редюсеры используются только для сохранения данных 2. Экшены испльзуются только для описания того, что должно произойти. Из описания экшена всегда должно быть очевидно, какое изменение и каким образом должно быть произведено 3. Более менее сложная логика должна быть упакована в thunk-экшены или в saga-экшены
По первым двум пунктам - к такому же пришёл, в редьюсерах вообще не было логики (но тогда возникает вопрос а зачем я их описываю каждый раз), по третьему пункту - использовались саги (знаю тут их хейтят некоторые господа), самое удивительное что из всего это только саги оставили положительное впечатление.
Павел
Я бы на первое место вынес многословность редакса (бойлерплейта)
короче, лаконичность хорошо только там, где тебе нужно максимально быстро сделать и сдать проект без дальнейшей его поддержки. Хотя, при хорошо продуманной архитектуре, можно и лаконично писать. Опять же, когда архитектура продумана хорошо - и с redux получается вполне лаконично, потому что редюсеры, по-большому счету, можно использовать для всех сущностей одни и те же. Разные только экшены и thunk, saga-экшены
Face
Добрый день, есть у кого наглядное решение для загрузки картинок в ckeditor 5, у меня есть апи метод, никаких проблем, но почему - то, то сам едитор рвет запрос, то не возвращает из промиса данные
Павел
По первым двум пунктам - к такому же пришёл, в редьюсерах вообще не было логики (но тогда возникает вопрос а зачем я их описываю каждый раз), по третьему пункту - использовались саги (знаю тут их хейтят некоторые господа), самое удивительное что из всего это только саги оставили положительное впечатление.
да, согласен. Редюсеры можно опустить. Их наличие нужно лишь для понимания того, что происходит. По моему опыту, когда редюсера нет - человек просто не верит, что это должно работать так, как описано. Редюсер, своего рода, подтверждение корректной работы приложения
Anonymous
Подскажите пожалуйста плагин инпут или селект поиск по дереву данных
Мехманчик I
ребят, кто то работал с реактовским компонентом Font Awesome?
Павел
Так получается у нас лишняя сущность возникает - редьюсеры, все время хотелось как-то выкинуть их из всей этой цепочки, если бы сага могла изменять стор напрямую... но это уже не редакс бы был
наличие редюсеров обусловлено тем, что сохранять данные в стор можно разными способами и не всегда этот способ легко описать где-то еще. Часть вспомогательной логики по способу сохранения данных находится в редюсерах, но если договориться о том, как мы работаем с данными, то да, их можно опустить. Короче, наличие редюсеров обусловленно ограниченностью javascript, как языка без адекватных способов хранить данные (объекты свойства которых равны undefined эквиваленты объектам без этих свойств - не будь этого свойства javascrip - редюсеры можно было бы опустить - что мы и наблюдаем во всех нормальных языках, где есть возможность создавать нормальные модели в виде классов)
Павел
ого, вы изобретаете еще +1 стейт менеджер
скорее javascript целесообразнее «поправить», чем еще один стейт-менеджер изобретать
Павел
Подскажите пожалуйста плагин инпут или селект поиск по дереву данных
Вот это подойдет: https://github.com/JedWatson/react-select там дерево одномерной вложенности поддерживается из коробки
Павел
Подскажите пожалуйста плагин инпут или селект поиск по дереву данных
вот чуть устаревшая библиотека для любого дерева: https://github.com/storybookjs/react-treebeard
Павел
Подскажите пожалуйста плагин инпут или селект поиск по дереву данных
В material-ui тоже есть классный компонент, но он еще сыроват, хотя я его успешно использую в проде: https://material-ui.com/components/tree-view/
Anonymous
что значит «поиск по дереву данных»?
Будут категории подкатегории и товары, поиск будет по названию категории подкатегорий или товара, но выборка будет только товара
Павел
Подскажите пожалуйста плагин инпут или селект поиск по дереву данных
Если речь именно о поиске по дереву - то это никак react-а не касается, и можно гуглить отдельно от контекста react
Павел
Павел
Хотя даже если нужно - код можно написать и самому, превратив дерево в плоский массив и искать уже по нему, используя одну из библиотек для отображения, что я предложил выше