Eugene 🐿️
И есть ли какой-то материал, о том как подписываться на изменения в сторе не в компонентах? Я бегло нагуглить не смог. На ангуляре это конечно намного проще делалось благодаря DI
Андрей
С редуксом я мог создать функ.компонент и из стора дать ему значение и диспач. С mobx я буду всегда создавать классовые компоненты если мне надо им передать стор?
Eugene 🐿️
почему у тебя авторизация в компоненте?
я имею ввиду что есть компонент, который следит за тем, авторизован ли пользователь и служит визуальным индиактором. Он же и подписан через mapStateToProps Сама авторизация не в компоненте
Eugene 🐿️
санки
Nurdan
Что кроме редакса есть? Санки/саги?
Они вместе с редаксом используются, помимо редакса есть mobx
Azamat
я имею ввиду что есть компонент, который следит за тем, авторизован ли пользователь и служит визуальным индиактором. Он же и подписан через mapStateToProps Сама авторизация не в компоненте
подходить надо с другой стороны блин) Сделай функцию которая будет делать проверку авторизации - если авторизация ок - диспатчь экшон с данными пользователя и делай в ней же следующий запрос - это способ в лоб
Ivan
санки
Тогда можно написать кастомную мидлварю для этого. В сагах такое из коробки.
Andrey
Тогда можно написать кастомную мидлварю для этого. В сагах такое из коробки.
зачем миддлварю, если можно просто диспатчить экшен нужный? который в зав-ти от способа будет дергать апи за разные места
Eugene 🐿️
Тогда можно написать кастомную мидлварю для этого. В сагах такое из коробки.
То есть это семантически хороший способ следить за изменениями в сторе, когда не нужен компонент?
Ivan
Не нужна никакая мидлваря
Ну я хз, что там с санками. Наверное да, не нужна мидлваря
Ivan
не очень понятно, где должна быть эта функция и за счет чего она должна в нужный момент проверить авторизацию
У тебя же есть санка, которая производит авторизацию? Вот в ней после успешной авторизации можно позвать нужные запросы.
Eugene 🐿️
нет, есть просто экшен, причем даже не один
Eugene 🐿️
т.к. в зависимости от того как прошла авторизация, в стор заносятся разные данные
Eugene 🐿️
мне важно отследить сам флаг authorized: true, поэтому я и хотел бы отслеживать изменения стора, чтобы в одном месте встроить эту логику, а не в нескольких
Eugene 🐿️
Может это конечно какое-то ангуляр мышление, но там реально было очень легко отслеживать изменения в сторе и что-то предпринимать, как в компоненте, так и вне него. Хочется в реакте тоже сделать как-то изящно
Andrey
мне важно отследить сам флаг authorized: true, поэтому я и хотел бы отслеживать изменения стора, чтобы в одном месте встроить эту логику, а не в нескольких
отслеживать(реагировать) изменения стора можно через коннект/хук все остальное дерганьем экшонов и рулением логикой в санках из этих слагаемых не слепить решение задачи?
Eugene 🐿️
отслеживать(реагировать) изменения стора можно через коннект/хук все остальное дерганьем экшонов и рулением логикой в санках из этих слагаемых не слепить решение задачи?
коннект/хук - как я понимаю это в обоих случаях только на уровне компонента. Так можно, но конкретно в моем случае компонент как бы лишний. Поэтому решение выглядит костылем. Если можно написать мидлвейр, который будет следить за изменением стора и вызывать другие экшены, то да это выглядит нормальным решением для меня.
Andrey
коннект/хук - как я понимаю это в обоих случаях только на уровне компонента. Так можно, но конкретно в моем случае компонент как бы лишний. Поэтому решение выглядит костылем. Если можно написать мидлвейр, который будет следить за изменением стора и вызывать другие экшены, то да это выглядит нормальным решением для меня.
“я меедленно размазываю логику по всему проекту…” компоненты диспатчат экшены - обозначают необходимость выполнить авторизацию, намерение что-либо сделать вне реакта (авторизация, запрос на сервер, ватева) если диспатчатся санки, там в зав-ти от стейта можно делать все, что душе угодно авторизация - в целом, глобальная задача для приложения, поэтому можно просто диспатчнуть из корня приложения экшен, который бы занимался уже в санке процессов авторизации как ему удобно
Azamat
у тебя должна быть санка примерно как вот эта. Если нет - сделай такую. Как - гугли доку))
Eugene 🐿️
ладно, тут наверное еще контекст проекта влияет и вопрос не самый очевидный
Eugene 🐿️
но картина мне стала понятней
Eugene 🐿️
спасибо, всем кто откликнулся 👍
js - one love
привет, как можно сделать сайт мультиязычним?
Andrey
у тебя должна быть санка примерно как вот эта. Если нет - сделай такую. Как - гугли доку))
с такого, что в сниппете приведен код явно не санка (если санк, то соре, но сигнатуры надо прально писать)
Ivan
отслеживать(реагировать) изменения стора можно через коннект/хук все остальное дерганьем экшонов и рулением логикой в санках из этих слагаемых не слепить решение задачи?
такая бизнес-логика, как «подтянуть данные в приложение после события авторизации» вообще никак не должна возникать в компонентах потому что это бизнес-логика, это не связано со вьюхой
Andrey
такая бизнес-логика, как «подтянуть данные в приложение после события авторизации» вообще никак не должна возникать в компонентах потому что это бизнес-логика, это не связано со вьюхой
ну, тк редакс нас прибивает гвоздями к лайфсайклу компонентов, то как есть уж можно конечно диспатчнуть в обход компонента, в стор напрямую, но это как обычно, со звездочкой тема
Китикет
А в случае разных способов авторизации - можно в общий санк прокидывать название способа и доп. данные, а там уже по мапе брать экшн для конкретного способа авторизации, из него возвращать флаг вроде wasSuccess и по нему уже ориентироваться в основном санке
Andrey
не прибивает вообще ни разу
с сагами - да, справедливо, с санками - уже нет (попробуй отреагировать на изменение стейта без компонента)
Alexey
Ребята,подскажите пожалуйста,вот основная структура моего приложения Я хочу чтобы при клике на левые пункты меню в контент правой части подгружался нужный компонент. Также хочу сделать редирект на отдельную страницу логина,если пользователь не залогинен,как это сделать?
Andrey
пишешь мидлварю в пять строк и ты великолепен
ага, а потом ищешь кусок кода, ответственный за логику это было в саге? в миддлваре? или ты по месту быстренько в компоненте накидал? великолепие редакса во всем его величии
Andrey
этот пассаж никак не связан с «редакс прибивает к лайфсайклу»
с ремаркой про саги, которые впрочем, могут следить за экшенами, но не за изменением стейта остальное - костыли с миддлварями
Китикет
блин мне тоже захотелось ловить события кРика 😂
Это уже к нейронке для распознавания голоса 🤔
Anonymous
да блджад, саги — это мидлваря
вот взял все испортил...
Akzhol
Всем привет, делаю модальное окно с динамическим контентом, т.е контент будет прилетать через пропс, как я понял Redux нерекомендует хранить компоненты в state, тогда как лучше передавать динамический контент модальному окну?
Andrey
да блджад, саги — это мидлваря
кэп ты сказал написать свою - я говорю, это костыли, с размазыванием логики, в СТОРОННИХ МИДДЛВАРЯХ с сагами ты просто пишешь саги, но не миддлварю
Ivan
кэп ты сказал написать свою - я говорю, это костыли, с размазыванием логики, в СТОРОННИХ МИДДЛВАРЯХ с сагами ты просто пишешь саги, но не миддлварю
давай на языке аналогий: если в проекте http-запросы делаются из саг, из санок, из кастомных мидлварей и из ЖЦ компонентов — это не размазывание костылей, а разработчик долбоёб если приложение написано на санках и если послушать событие нужно единожды за всё приложение, то можно написать кастомную мидлварю для этого. конечно же я бы сразу заюзал саги без санок и без кастомных мидлварей — я-то хорош. если я приду в проект на санках, я не буду сразу же всё переписывать на саги только из-за того, что мне нужно послушать один экшон
Eugene 🐿️
👍
Yury
Можете пожалуйста подсказать?
читай про роутинг/авторизацию в Реакте
Alexey
читай про роутинг/авторизацию в Реакте
у меня основная фишка-это при изменении линки в урле,менять контент правого компонена,как это сделать?
Azamat
Можете пожалуйста подсказать?
на чистом реакте пишете?
arthur
на чистом реакте пишете?
а какой ещё бывает
Azamat
ну так все правилно говорят - react-router плюс хуки
Alexey
мне нужно обновлять не всю страницу,а только правую часть,как это сделать?
Azamat
а какой ещё бывает
бывает приложение со стейт менеджером и сторонними либами для работы с апи
Azamat
мне нужно обновлять не всю страницу,а только правую часть,как это сделать?
я открыл документацию по реакт-роутеру и нашел вот это - https://reacttraining.com/react-router/web/example/nesting. А ты открывал доку?
Azamat
от этого реакт становится нечистым? 🤦‍♀️
что за доебства до формулировок - все же поняли, что я имел в виду под "чистым реактом" приложение только с реактом без других доп.либ
Vlad
Сорян за оффтоп. какой лучше Linux дестребютив поставить, конфигурация ноута Core i5, 8 гигов оперативы, 1,5 тб жесткий.... а то чет у меня не вывозит IDEA. Сейчас стоит убунта 18.04
Azamat
такого не бывает (хелоу ворд не считается)
по контексту исходного вопроса - такое возможно, и именно этот момент я уточнял. А вообще - предлагаю перестать переливать воду