Cenator 🐈
variables: { id, input: { email, { …fields } } }
Hlib
Огромное спасибо! Получилось 🙂
S
Есть массив в котором много обьектов, внутри них ещё обьекты? Как вы изменяете обьекты когда такая вложенность в redux. Пока что нашел immutability helper, кроме него слышал делят редюсеры и привязывают их к каждому объекту, что посоветуете?
S
есть сервисы для мока
Не понял, типа firebase?
Dmitry
https://www.mockapi.io
S
https://www.mockapi.io
Уау, благодарю!
Vadim
Ребят, кто юзает react+typescript и линтит через eslint (не tslint) - скиньте конфиг eslint в лс , пожалуйста
Vadim
Ну с тслинтом каждый может) но вроде ж скоро тслинт весь в еслинт переедет, я вот и решил попробовать. Но есть проблемки.
Cenator 🐈
Ребят, кто юзает react+typescript и линтит через eslint (не tslint) - скиньте конфиг eslint в лс , пожалуйста
{ "extends": "eslint-config-react-app", "rules": { "import/no-default-export": ["error", "always"] } }
artalar
он ж деприкейтед либо уже либо вот-вот
Viktor
Я ещё пока не очень силен в реакте, но подскажите мне, зачем нужно использовать различные css либы, если есть css модули?
artalar
Я ещё пока не очень силен в реакте, но подскажите мне, зачем нужно использовать различные css либы, если есть css модули?
У всех либ и подходов есть свои ограничения. Соответственно либу нужно выбирать под особенности продукта
Vadim
Ну с тслинтом каждый может) но вроде ж скоро тслинт весь в еслинт переедет, я вот и решил попробовать. Но есть проблемки.
Все, разобрался. Я думал у меня .tsx файл не линтит, а там была тупо синтаксическая ошибка и поэтому он его не мог схавать.
Mihail
https://gedd.ski/post/state-machines-in-react/
Mihail
https://gedd.ski/post/state-machines-in-react/
Кто-нибудь юзал такое?
Alexander
От какого порога считать, много пакет весит или нет?
Roman
можно пробросить history чтоб он был доступен в redux thunk
Artem
Вывод в логе false, но идет по ветке true почему так?
Roman
- создаёшь history из createBrowserHistory - используешь Router вместо BrowserRouter и передашь ему эту хистори - также передаешь ту же хистори когда создаёшь store. у redux-thunk есть фабрика withExtraArgument или как-то так - во всех thunk теперь у тебя будет приходить (dispatch, getState, history) - можешь делать history.push
Roman
https://github.com/reduxjs/redux-thunk/blob/master/README.md#injecting-a-custom-argument вот
Artem
сам вчера это делал, но прокидывал хистори по-другому, сделал так как подсказал Роман, все работает, спасибо
Artem
applyMiddleware(thunk.withExtraArgument({ history })) return (dispatch, getState, { history }) => { Там объекты, вроде это важно
Artur
Всем прив! Подскажите пож есть форма поиска интерактивная с подсказками для ввода и последним вводом (5 последних) стоит ли куда то вот эти 5 последний выносить в redux или можно хранить в самой форме в стейте?
SENATOR ARMSTRONG
Всем привет. Есть ли смысл писать самому гриды или есть достойные библиотеки для реакта? Нужна пагинация, сортировка и всё. Ну и возможно открытие деталей каких-то при клике на строку
SENATOR ARMSTRONG
никто не знает?
Думаю тут из-за чего-то асинхронного
SENATOR ARMSTRONG
setState это асинхронная операция, мб из-за этого такое поведение
Artem
setState это асинхронная операция, мб из-за этого такое поведение
Да, но status никто не принимает true, всегда false, должно выводить нормально
Sm•ok
Он ведь будет этот метод вызывать на каждую смену стейта => и логи будут те же
Artem
Вряд-ли. Думаю он запутал там рендер
А что там можно запутать?
Sm•ok
А что там можно запутать?
Не знаю. Надо чекать код. А ты уверен что ты верно построил условие тернаркой и ты верно меняешь стейт без мутаций?
Artem
Не знаю. Надо чекать код. А ты уверен что ты верно построил условие тернаркой и ты верно меняешь стейт без мутаций?
Не могу быть ни в чем уверенным, так как не работает) но вообще судя по коду должно работать так, как я задумал. Весь код на скрине, больше нет кода
Sm•ok
Глянь что там и ещё раз проверь что в рендер прилетает. Вряд-ли будут разные значения
Artem
Глянь что там и ещё раз проверь что в рендер прилетает. Вряд-ли будут разные значения
Так в рендере консоль лог и там false 2 раза (изначальное и после http запроса)
Sm•ok
да
Но в рендере он берет первый?
Artem
Кстати если сделать изначально true, то он отработает по ветке false и потом получит false и отработает по ветке true
Sm•ok
false ? Мем с Дрейком нет : Мем с Дрейком да
Sm•ok
Ты уверен что понял как работает с тернаркой своей при фолс?
Artem
даже так по ветке тру идет
Sm•ok
Меняй свои компоненты
Sm•ok
Если я ничего не упустил. Попробуй False ? "One" : "two" Если это работает, дело в твоих компонентах
Artem
false выводит two
Sm•ok
false выводит two
Верно Так и должно быть
Artem
Верно Так и должно быть
нашел проблему, сначала надо проверять тру, потом фолс и тогда все ок
Artem
А как можно дождаться загрузки данных и только потом выполнить render?
Aleksandr
нашел проблему, сначала надо проверять тру, потом фолс и тогда все ок
Странное какое то решение:) а может там вообще false строковое приходит? Ну мало ли, бывает и такое
Yanush
А как можно дождаться загрузки данных и только потом выполнить render?
а сделать флажок isLoading и в return !isLoading ? <Component /> : null ?
Aleksandr
А покажи как стало)
Artem
А покажи как стало)
В компоненте или его вывод?
Artem
а сделать флажок isLoading и в return !isLoading ? <Component /> : null ?
Заголовок и прочее выводиться будет
Aleksandr
Я про скрин, который был изначально) но если ты про AuthStatus, то тогда не надо:)
Yanush
заголовок и прочее относятся к этому компоненту, который ждет загрузки?
Aleksandr
Проблема была AuthStatus
Ясно понятно:) Просто было предположение, что data.status = 'false' а 'false' !== false
Sm•ok
Проблема была AuthStatus
Попробуй заменить фрагмент на <> </> Или у тебя старая версия реакт
Artem
Попробуй заменить фрагмент на <> </> Или у тебя старая версия реакт
Да все уже работает как надо) и реакт последняя версия) подскажите лучше как дождаться данных и потом выполнить render)
Yanush
Да
так а в чем проблема тогда перенести заголовок итд в компонент, отображение которого зависит от асинхронного риквеста? по-сути ты не будешь его рендерить (включая заголовок), если у тебя нет данных для его отображения
Artem
Это заголовок на всех страницах, поэтому он вынесен за пределы роута
Sm•ok
loaded && urComponent Ну или в ребенке можешь сделать Тернаркой и если не загрузилось,то возвращать нул или emptyView
Sm•ok
const FnComp = ({isLoading}) => { const loadingView = isLoading && "загрузка..." const defaultView = !isLoading && (ur jsx) return ( <> {emptyView} {defaultView} </> ) } Писал с мобилы. Подправь сам
Artem
Спасибо за помощь, вот так сделал
Yanush
вместо return <React.fragment/> ты можешь просто вернуть null
Artem
ты можешь вынести set loading false в .finally после then
Но это будет два раза setState, соответственно 2 перерисовки вместо 1, это же хуже, не?
Artem
вместо return <React.fragment/> ты можешь просто вернуть null
Знаю, просто приятнее видеть пустой блок
Andrei
подскажите правильный путь сравнивать дробные число, а то 1.00254654 > 1.00875765
Anonymous
Лучше знать проблему в лицо :)