Kurzdor
Объективно и кратко)Что бы не затупил на собеседовании)
Почитай в нете про это, а вот что собес пройдешь, сомневаюсь
Kurzdor
Раз такие вопросы
Ilia
Почитай в нете про это, а вот что собес пройдешь, сомневаюсь
Ну я написал про то,что я думаю))Плюс, исключаем пробрасывание, минус - зависимости
Kurzdor
Есть получше расписаны причины почему редакс плох
Kurzdor
Хотя он неплохо так выполняет свою функцию
Kurzdor
Сторманаджить
Anonymous
Можно ли использовать такую архитектуру для реакт приложений ?
Sergey
Можно ли использовать такую архитектуру для реакт приложений ?
можно любую. Но тут всё движется к тому чтобы вещи относящиеся друг к другу класть рядом. Это я про отдельные папки для css, img. Они не нужны)
Oleg
Внутри цикла рисуй свою фигню и сердце, только индекс передавай на сердце что бы понимать что лайкаешь
У меня еще одна проблема. Внутри цикла у меня 2 поля. И если выбираю лайк, то срабатывает и второе, как это можно исправить? Собственно из-за этого и пошла первоначальная проблема с этим
Dwight🫀
Ребята, как подключить devTools?
Dwight🫀
Установил для хрома
Dwight🫀
но не отображает вкладку с реактом
Igor
отображает
Dwight🫀
нет
Dwight🫀
Valentin
Да, локально. Поэтому и ломаю голову (
Эм.... Каждый объект из массива закидываешься в компонент. Который будет рисовать ui по данным. И хранить в стейте состояние лайка
Sergey
но не отображает вкладку с реактом
перезапустить devtools, обновить страницу
Dwight🫀
Sergey
тут как бы классика - у меня не работает - а вы пробовали выключить и включить снова?
Dwight🫀
Забыл совсем за это)
Dwight🫀
всё заработало, спасибо Сергей
Oleg
Эм.... Каждый объект из массива закидываешься в компонент. Который будет рисовать ui по данным. И хранить в стейте состояние лайка
У меня 2 массива. Один массив с объектами с api(Было бы конечно просто если там было такое поле). В другом массиве я храню индексы лайков в соответсвии с первым массивом. Не могу додумать
Mihail
трансформируйте в объект
Oleg
А зачем тебе второй массив?
Чтобы хранить например индекс того объекта на который я лайк нажал. Думал через includes проверять и выдавать результат
Valentin
Чтобы хранить например индекс того объекта на который я лайк нажал. Думал через includes проверять и выдавать результат
бррр, не понимаю твою боль. ты сам усложняешь себе все. сек, сейчас накатаю тебе
Oleg
бррр, не понимаю твою боль. ты сам усложняешь себе все. сек, сейчас накатаю тебе
Спасибо! Буду очень благодарен, чувствую, что сейчас голова уже закипит
Valentin
И так у нас есть список моделей, которые мы хотим нарисовать и добавить возможность "лайкать" записи. Вариант номер ван: Каждый объект акамулирует в себе модель (с апи) и состояния ui (лайк не лайк) [dataList.map(model => <Component model={model} />) class Component extends React.Component { state = { isLike: false } render() { return данные модели + лайк + триггер на изменение состояния isLike } } Этого достаточно для твоей задачи. Но мы не можем сохранять выбранные лайки вне текущей сессии. Наверное поэтому ты хочешь хранить ассоциативный массив с ключом (идетификатор записи) и значением лайк или не лайк. Тогда у нас есть две модели: dataList - список моделей с апи. [{ id, title, ...}] likesList - сохраненные лайки на записи [{ id, isLike }] .... тут тьма вариантов реализации. Давай попробуем написать самый "понятный" вараинт. Нам нужно получить список данных для вывода и наш лист выбранных (залайканых) записей. co```nst computedList = dataList.reducer((result, model) => { // 1. берем только нужные данные для ui const { id, title } = model; // 2. ищем есть ли для данной записи лайк // я тут макс сокращаю. const like = likesList.find(item => item.id === id) || { id, isLike: false}; // собранную модель добавляем в список для рендера result.push({ id, title, isLike }); return result; }, []) р```едьюсером проходим каждую запись, из нее вынимаем нужное + добавляем данные из likesList. Если нет лайка для записи, значит создаем дефолтный. Теперь этот список должны отрисовать, и добавить метод изменения лайка. У нас будет ид записи и состояние лайка. И обновляем likesList который где то выше вместе с dataList Этот вариант понятен, но мне не нра. Но для начала пойдет. как то так, с телефона не удобно теперь что именно не понятно. Как я понял это соединить список моделей для рендера и какой то список где мы храним лайки для моделей
Oleg
То есть, если я правильно понял, собрать свой собственный массив с объектами и вставить туда нужные поля и потом отоброжать?
Oleg
И так у нас есть список моделей, которые мы хотим нарисовать и добавить возможность "лайкать" записи. Вариант номер ван: Каждый объект акамулирует в себе модель (с апи) и состояния ui (лайк не лайк) [dataList.map(model => <Component model={model} />) class Component extends React.Component { state = { isLike: false } render() { return данные модели + лайк + триггер на изменение состояния isLike } } Этого достаточно для твоей задачи. Но мы не можем сохранять выбранные лайки вне текущей сессии. Наверное поэтому ты хочешь хранить ассоциативный массив с ключом (идетификатор записи) и значением лайк или не лайк. Тогда у нас есть две модели: dataList - список моделей с апи. [{ id, title, ...}] likesList - сохраненные лайки на записи [{ id, isLike }] .... тут тьма вариантов реализации. Давай попробуем написать самый "понятный" вараинт. Нам нужно получить список данных для вывода и наш лист выбранных (залайканых) записей. co```nst computedList = dataList.reducer((result, model) => { // 1. берем только нужные данные для ui const { id, title } = model; // 2. ищем есть ли для данной записи лайк // я тут макс сокращаю. const like = likesList.find(item => item.id === id) || { id, isLike: false}; // собранную модель добавляем в список для рендера result.push({ id, title, isLike }); return result; }, []) р```едьюсером проходим каждую запись, из нее вынимаем нужное + добавляем данные из likesList. Если нет лайка для записи, значит создаем дефолтный. Теперь этот список должны отрисовать, и добавить метод изменения лайка. У нас будет ид записи и состояние лайка. И обновляем likesList который где то выше вместе с dataList Этот вариант понятен, но мне не нра. Но для начала пойдет. как то так, с телефона не удобно теперь что именно не понятно. Как я понял это соединить список моделей для рендера и какой то список где мы храним лайки для моделей
Спасибо. Сейчас буду пытаться реализовать !
Valentin
То есть, если я правильно понял, собрать свой собственный массив с объектами и вставить туда нужные поля и потом отоброжать?
как хочешь, я бы не собирал. А на прямую через прокси работал с записями и списком лайков. можно перед рендером их собирать вместе
Oleg
Все равно собирать ?
Eduard
Ребят, гугл не даёт очевидный ответ (но я чувствую , что ответ в одну строчку). Говорит что ключ обьявлен но не используется , ругается желтым. Без ключа ругается красным.
Eduard
Sergey
разработчик не умеющий в скриншоты это прям вообще топ 🤦‍♂️
Denis
разработчик не умеющий в скриншоты это прям вообще топ 🤦‍♂️
разработчик, не понимающий, что другой разработчик может сидеть в телеге с телефона это прям ваще топ
Sergey
разработчик, не понимающий, что другой разработчик может сидеть в телеге с телефона это прям ваще топ
а с компа типа нереально залогиниться чтоб скриншот кинуть? Это вообще топ. Давайте ещё топов перечислим
Denis
а с компа типа нереально залогиниться чтоб скриншот кинуть? Это вообще топ. Давайте ещё топов перечислим
качать клиент на комп, туда логиниться, чтобы тебе предоставить именно скриншот это вообще топ
Sergey
качать клиент на комп, туда логиниться, чтобы тебе предоставить именно скриншот это вообще топ
предположение что никто не попросит код текстом, из-за чего придётся всё равно качать и логиниться это вообще топ
Anonymous
А не подскажете, где можно найти исходные коды хорошо написанных приложений на реакте?
Sergey
ну и справедливости ради, на этом "скриншоте" я не вижу ни жёлтого ни красного
Sergey
в опенсорсе вряд ли чё толкового найдёшь кроме todomvc. Знаю что есть проект realworld, но это та ещё шляпа, лучше даже не смотреть чё там под капотом
Anonymous
@skywalker587 так а как понять, где круто написано, а где так себе?
Oleg
@skywalker587 так а как понять, где круто написано, а где так себе?
можешь пока глянуть официальные примеры с сайта React
Sergey
@skywalker587 так а как понять, где круто написано, а где так себе?
везде херня))) Сам искал не так давно. Лучше не забивать себе голову
Anonymous
@faergeek А что ты скажешь об этой архитектуре ?
Sergey
@faergeek А что ты скажешь об этой архитектуре ?
вот это самый адекватный варик. Разве что я бы даже обошёлся без components и images, если там конечно не много файлов прям
Sergey
получается нужно вынести images, и components в app ?
не. Ну во-первых "нужно" тут не уместное слово)) Как хочешь так и делай. А во-вторых я имел ввиду просто один уровень вложенности срезать. То есть вместо catalog/components/Aa.js просто catalog/Aa.js. Ну и для файлов я бы юзал нижний кэмелКейс всегда. Но в общем это дело вкуса. И можно использовать это как есть, а на то что я ща написал забить)
Oleg
Почему react hooks не хочет перерисовывать по клику другой компонент?) Кто сталкивался
Oleg
Есть компонент. который я мапаю. Я уже задавал вопрос с лайками. Td идет как дочерний компонент
Oleg
Внутри него у меня есть условие взависимости от которого я подменяю картинку
Oleg
Стейт изменяется, я вижу по логам
Андрей
Стейт изменяется, я вижу по логам
Как ты эти логи выводишь?
Oleg
Через пропсы передаю функцию и забираю индекс колбеком
Андрей
Oleg
Так) Object.assign и переписать?
Андрей
Так) Object.assign и переписать?
Делай как удобнее.
Sergey
ну насколько я знаю в папке components хранятся тупые компоненты которые можно потом переиспользовать повторно
в зависимости от того где их переиспользовать, их можно хранить в общей папке, например. А можно прям рядом с местами использования. В общем я бы не парился так сильно. Это можно именем файла даже решить)
Valentin
Стейт изменяется, я вижу по логам
Зач ты берёшь по индексу? А если след раз в другом порядке придут данные?
Oleg
У меня это лайки, тут по идее все равно
Sergey
а в файле store.js нужно комбайнить все редюсеры, я правильно понял ?
опять же, вычеркни слово "нужно" в таких обсуждениях))) Можно всё хоть в одном файле писать, если это удобно и технических проблем не вызывает) Кто-то комбайнит там где стор создаёт, кто-то заводит отдельный файл, потому что его можно потом перезагружать на горячую, не теряя стэйта или вообще переприменяя все экшны. Тут нет серебряной пули
Oleg
Т.е. мутабельность тебя не смущает?
Спасибо! Заработало, я просто уже забыл, как правильно надо было
Sergey
Просто можно такое намудрить что любой ужаснется :)
ну если сам в итоге ужаснёшься и исправишь, значит растёшь))) А так ужаснуться можно хоть идеальному коду, ибо он чужой, а значит гавно априори)))
Anonymous
ребят подскажите. делаю корзину с товаром и опциями. все это заноситься в redux. может ли человек вручную на клиенской стороне поменять значение в redux и собственно поменять на цену товара который в корзине?