rovnyart
ну в общем вместо foo.filter поставь в скобках foo или (две вертикальные палки) значок пустого массива .filter
rovnyart
или испльзуй значеия по умолчанию
Ilya
Добрый вечер, имеется следующий код https://codesandbox.io/s/sweet-rgb-7nl0h, не могу решить проблему с фильтрацией данных, возможно проблема в reducers или app, в общем очень был бы признателен за помощь
reducer должен быть функцией, а у тебя JSON после импорта сразу массив выгружается. Сделай по аналогии с filterPeople, просто в initialState помести импортные данные.
G.
они ведь будут меняться.. наверно не стоит так делать с пропсами)
Стоит, стоит, как раз в стейт без необходимости не стоит их помещать
Sergey
хм.. т.е так можно? получить данные через коннект и позже менять их формой через onChange?
Sergey
Не нужно ничего на прямую брать. В компонентах из стора данные берутся через connect
G.
хм.. т.е так можно? получить данные через коннект и позже менять их формой через onChange?
Нет. Нормально получить их через connect в пропс, эти пропс передать в инпуты формы. На onChange ты будешь уже с новыми значениями из инпутов делать что тебе нужно
rovnyart
вот вообще теперь больше не могу представить себе ни единого сценария, когда нужен был стейт приложения и этот унылый редакс, кроме обучения, но и обучаться же надо тому, что актуально, а стейт-менеджеры - это уже давно не актуально, зачем тогда вообще тратить на них время?🤔
G.
Не нужно ничего на прямую брать. В компонентах из стора данные берутся через connect
Ты можешь держать значения инпутов в стейт. Начальные брать из пропсов. При сабмите использовать значения из стейта
rovnyart
возьми ты контекст апи, возьми ты хуки
rovnyart
не мучайся с этим говном унылым, танками и сагами, экшонами и диспатчами
rovnyart
твой юзер.емейл отлично будет лежать в контексте
Vladyslav 🍉
Спасибо, попробую надеюсь будет работать)
Dmitriy
возьми ты контекст апи, возьми ты хуки
Контекст !== Стейту приложения?
Sergey
хм.. погуглю, Спасибо!)
Sergey
вся проблема в том что начальные значения в стейт не приходят, пропсы позже подъезжают(
Sergey
Ты можешь держать значения инпутов в стейт. Начальные брать из пропсов. При сабмите использовать значения из стейта
G.
вся проблема в том что начальные значения в стейт не приходят, пропсы позже подъезжают(
Ну так поставь дефолтные какие-то раз их ещё нет. Путая строка например
rovnyart
Интересно посмотреть как ты контекстом редакс заменил. У тебя там не получился мини редакс?)
а что такое мини редакс? если больше не нужны лишние инструменты, то зачем их использовать? то что мертво умереть не может только в игре престолов, а в жизни очень даже может
Sergey
стоят, но когда приезжают пропсы, стейт не обновляется))
Sergey
Ну так поставь дефолтные какие-то раз их ещё нет. Путая строка например
Sergey
componentWillReceiveProps я нашёль! Эта штука должна мне помочь!
G.
componentWillReceiveProps я нашёль! Эта штука должна мне помочь!
Эта штуку уже не следует использовать. Вместо нее есть getDerivedStateFromProps
Sergey
хм, окей)
Dmitry
Привет. У меня есть приложение с react-роутером и моим react-компонентом. При запросе по определённому пути (с переменной в составе пути) роутер монтирует мой компонент и передаёт ему данные через properties. Какое событие я могу использовать, чтобы обрабатывать новые значения properties до рендеринга? В рендеринге я использую данные, которые передал роутер, прошедшие обработку.
G.
Хотя нет, не годится
Frontend Priest
Вечер, чатик Есть какие-то гайды по настройке окружения для разработки пакетов? Не могу сам допереть, как разложить в репе сорцы и примеры, чтобы реалтайм менять и то, и другое, но без написания огромных хитрых конфигов
G.
а что такое мини редакс? если больше не нужны лишние инструменты, то зачем их использовать? то что мертво умереть не может только в игре престолов, а в жизни очень даже может
Например, ты подгружаешь какие-то данные с бекенде ты хранишь где-то флаг/статус на основе которого ты показываешь например спиннер? Сами загруженные данные где-то сохраняешь?
Dmitry
React.useEffect(() => {}, [пропы от роллтона])
> The function passed to useEffect will run after the render is committed to the screen.
Dmitry
https://reactjs.org/docs/hooks-reference.html#useeffect
G.
хм, окей)
А почему у тебя значения инпутов позже появляются, откуда они берутся?
Frontend Priest
> The function passed to useEffect will run after the render is committed to the screen.
Попытка 2 [savedProp, saveProp] = React.useState() if (newProp !== savedProp) { // handle saveProp(newProp) }
Sergey
в инпут кидаю стейт, а когда стейт объявляю, связываю с пропсом, и по дефолту ''
Sergey
А почему у тебя значения инпутов позже появляются, откуда они берутся?
Дима
конфиги — это часть кода
Sergey
getDerivedStateFromProps решил проблему, но даёт варнинг *** A component is changing an uncontrolled input of type text to be controlled. Input elements should not switch from uncontrolled to controlled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component.
Sergey
А почему у тебя значения инпутов позже появляются, откуда они берутся?
Дима
но для простоты можно большую часть тасков просто крутить парселем либо джестом
rovnyart
Например, ты подгружаешь какие-то данные с бекенде ты хранишь где-то флаг/статус на основе которого ты показываешь например спиннер? Сами загруженные данные где-то сохраняешь?
Конечно) для этого используется обычный hoc- некий дата провайдер, который позволяет загрузить данные и хранит в себе флаги loading и loaded) плюс ещё даёт дочернему компоненту функции для фетчинга данных по необходимости
Frontend Priest
но для простоты можно большую часть тасков просто крутить парселем либо джестом
Хотел всего лишь библиотечку, а в ней папку example с кряшным прожектом, чот всё очень сложно
Дима
ну и пусть папка example ставит библиотеку из npm
Дима
пофиксил — апдейтнул
Frontend Priest
первые версии приходится менять по 10 раз в час, там нпм замедляет разработку
Frontend Priest
не грубо ли будет симлинк сделать?
Дима
как удобнее)
Dmitry
Насколько сложная там обработка. Если не очень то можно и при рендере или использовать мемо
Из данных, которые передаёт роутер, переменная в пути передаётся в rxjs-поток. Там происходит её обработка, пока что простое декодирование из base64.
Dmitry
В подписке к этому потоку происходит запись в mobx-хранилище. В рендеринге компонента используются переменные из этого хранилища.
rovnyart
Ну так у тебя получается подобие части Редакса в виде Хока
Так я и не спорю) но зато у меня нет редакса, нет редьюсеров и тупых саг танками, нет кучи лишнего говнокода ради кода, есть просто компонент-провайдер данных с сервера. Все остальное, что нужно, лежит в контексте, конец)
Дима
стадия "look mam no hands"
Vladislav
это же скока надо провайдеров нахерачить на дэшборд божечки
Дима
и при апдейте каждого из них реакт перетряхивает всё дерево, на всякий пожарный
Дима
здорово правда
Vladislav
и при апдейте каждого из них реакт перетряхивает всё дерево, на всякий пожарный
In most cases, React performance is not something you need to worry about. The core library does a ton of work under the hood
Александр
здорово правда
А ведь опыт react-redux v6 должен был научить...
Александр
А ведь опыт react-redux v6 должен был научить...
Если бы кто-то вникал в детали ;(
rovnyart
Возникает вопрос зачем тогда люди используют Redux или аналоги)
их больше никто и не использует, только дремучие легаси-дрочеры, у которых в спринтах нет задачи по актуализации стека
rovnyart
мы выпилили редакс за 2 спринта, из проекта на 8к пользователей, энтерпрайз
rovnyart
уже в бою нет редакса
Andrew
о хоспадиии
Vladislav
8к пользователей говорит об объёме и сложности кода
Дима
уже в бою нет редакса
не в ту сторону воюешь
Александр
8к пользователей говорит об объёме и сложности кода
О сложности не говорит, справедливости ради, и объёме, только о количестве юзверов
rovnyart
четно говоря я не знаю почему меня так горит от редакса)
rovnyart
наверное зря)
G.
уже в бою нет редакса
Мне кажется значительная часть того что пишут в редакс санках или редюсерах, оно у тебя тоже есть только в этом хоке