Комментарии:
Если у вас ошибка Module not found: Error: Can't resolve 'redux' in... нужно в файле package.json удалить строчку redux и заново переустановить redux и всё заработает + вместо {createStore} пишется {legacy_createStore as createStore} или просто { legacy_createStore } , если у вас белый экран, проделайте всю работу заново и перезапустите приложение. Если же у вас по прежнему белый экран не проходит, закомментируй в файле sidebar-reducer.js всё что есть т.к. в этом компоненте нет логики и функция ничего не возвращает, это с способствует появлению ошибке
ОтветитьПо ощущениям произошла какая то магия, надо будет пересматривать этот урок чтобы двигаться дальше
ОтветитьИтак, пишу для тех, у кого НЕ работает, прошел ряд обновлений, теперь все выглядит немного иначе, я сам просидел дня два, чтобы сделать:
---
1. CreateStore устарел, об этом подскажет при импорте, оно будет перечеркнуто, нужно сделать install react toolkit, сейчас его используют (как точно пишется загуглите)
---
2. combineReducers делаем также let reducers = combineReducers({...}), потом вместо createStore пишем: let store = configureStore({reducer: reducers})т.к. он подразумевает на вход один уже объединенный reducer как я понял.
---
3. Не забываем передавать подписчику state как в видосе.
---
4. Все-равно не работает, т.к. прошло обновление, теперь нельзя менять объект, который к нам пришел в редьюсере, компилятор ругается, нужно создать копию, простым let newStore = store не отделаться (в js объекты не копируются, в этом случае newStore просто присвоится ссылка на store), нужно создать полный клон, JSONparse для этого лучше не использовать(криво клонируются многие объекты), либо самим делать "глубокое клонирование" рекурсией (смысла в этом нет, да и лень разбираться как), либо использовать structuredClone. Советую этот вариант. let newStore = structuredClone(store), затем все действия производим уже с newStore. Будет работать
---
4.1. У меня в массивах была jsx разметка, когда я присваивал аватарке картинку, типа: (ava: <img SRC='ссылка'>..). Такие объекты как я понял никто не умеет клонировать, кроме глубокого клонирования наверное, будет ошибка, что элемент не может быть клонирован, поэтому оставляйте ava: 'ссылка', а уже потом при маппинге оборачивайте ссылку в тэг. Некоторые другие элементы тоже могут не клонироваться, у меня не было такого, но такое есть, проверяйте ошибку.
---
5. Радуйтесь))) и все норм, это не вы тупые, а штука сложная, без гугления ошибок и комментов не сделать (я сам смотрел комменты)
ты молодец, спасибо за уроки 2023
ОтветитьКак-то стыдно. На этом уроке я застрял на 4 дня. Мне среда разрботки отметила CreateStore как Depricated и я заменил его на ConfigureStore. Все прекрасно, нужно лишь сделать так:
let reducers = combineReducers ({
dialogs: messageReducer,
wall: postReducer
});
export let store = configureStore({
reducer: reducers,
});
Или даже так:
export let store = configureStore({
reducer: {messageReducer, postReducer},
});
Но по ходу выполнения задач у меня почему-то getState возвращался пустой, хотя все было как в уроке строка в строку (как был уверен я)
И что я осознаю спустя 4 долбанных дня? Что getState - мать его функция и ее надо было вызывать с помощью скобочек. СКОБОЧКИ, КАРЛ!!! 4 ДНЯ НА ПОИСК ДОЛБАННОЙ СКОБОЧКИ!
Чтож... Выпью ка я чаю и продолжу
В 2023-м последнюю проблему с вводом символов vsCode сам предлагает пофиксить следующим образом <App state={store.getState()} dispatch={store.dispatch.bind(store)} />. Аж не верю что уже бомбим redux)) летим🚀
ОтветитьАхренеть какой замес пошел! Это уже редакс по-взрослому пошел. Лайк, Дима)
Ответитьа если в этой строчке у меня вот такая ошибка , кто то сталкивался " rerenderEntireThree(store.getState()); "
TS2554: Expected 0 arguments, but got 1.
воу воу, как можно так понятно обьяснять ?)) притормози )))
ОтветитьТож, повернувся я через 4 місяці до курсу і зрозумів що все забув. Витратив день щоб переглянути 2 підсумки та останні 10 уроків, щоб згадати що да як... Не зважаючи на потрачений час, продовжив уроки, почавши дивитись цей урок. Далі опишу свої коментарі та враження...
Не впевнений, що хтось це побачить, однак опишу, які складнощі були в мене при виконнанні даного уроку 10.06.2023 році.
Сладнощей було декілька, як і казали попередні коментарі, імпорт трішки змінився:
import {combineReducers, legacy_createStore as createStore} from "redux";
інша проблема була в найменуванні методів, тобто в index.js у нас є метод subscribe а не subscriber - це важливо
також, за власною ініціативою я обернув dialogPage та profilePage в об'єкт contentBar, звісно в мене був інший шлях props при виклику, це викликало певні помилики при реалізації через redux, тому якщо ви, як і я натицяли зайвого, просто змініть шлях props як на уроках та можливо у майбутньому зрозуміло буде як це редагувати без помилок
Порада від себе - не робіть великих перерв та намагайтеся спочатку робити по уроку а лише потім лізьте у коментарі якщо не вийде
после добавление редьюсеров, ошибка - Profile.js:10 Uncaught TypeError: Cannot read properties of undefined (reading 'posts')
at Profile , не может прочитать эту строчку в Profile : <MyPosts posts = { props.profilePage.posts } посты приходят undefined... У кого-то такое было?
завершив урок)) була одна помилка у мене у слові subscribe, через це не відправлялися смс. тому слідкуйте за назвами. всі добра
Ответитьу меня не работают в итоге мапы все в файлах. ПОдскажите, как правильно передать из редакса данные в компоненту? например:
let Dialogs = props.state.dialogsData.map(dialog => -в компоненте написано, и туда не доходят данные dialogsData .
У меня была ошибка "Cannot read properties of undefined (reading 'navBarData')", оказалось что в App.js я в Navbar передавал <Navbar state={props.state.sideBar} />, когда в reduxe-store у меня название было sidebar, тобишь с маленькой буквы, что всё и поламало. Исправил в reduxe-store название и все заработало
ОтветитьКто ни будь сталкивался с ошибкой index.js:24 Uncaught TypeError: _Redux_redux_store__WEBPACK_IMPORTED_MODULE_4__.default.subscrib is not a function ???
Дошел до 26 минуты все сделано по видео. Инпут не реагирует.
кавабанга)
Ответитьесть изменения в синтаксисе redux
import {combineReducers, legacy_createStore as createStore} from "redux";
Каждый раз восхищаюсь, как можно так подробно и понятно объяснять.Просто пушка ваши уроки.Летим дальше. А песенка про старинного друга Redux в начале крутая🤣
ОтветитьReact JS Практика - Redux
ОтветитьДимыч красава! Уже редакс!!! УУУУУ=) круто объясняешь! Ребята 2023год=) летим!=)
Ответитьчто-то это видео - полный вынес мозга... Боюсь что будет дальше
ОтветитьПриветствую всех Reactoroff, завис на этом уроке ,после подключения Redux`ого stora полетели ссылки (Route) я так понимаю, в консоле выдает: No routes matched location "/" . А при переходе в профайл или диагогс - "стена"
Ответитьблин, как же приятно, когда выпадет ошибка, которой у Димича не было, а ты ее решил сам, аж понимание всей системы приходит)
ОтветитьЯ на данный момент на данном уроке. Кто полностью проходил курс, подскажите, будет ли регистрация в нашей соц. сети?
ОтветитьЧерез 50 лет мы все умрем . Поголовно все. Так предсказали) мож и раньше
ОтветитьОт души Димыч !!!❤
ОтветитьНаконец то повсеместный некорректный перевод ретурна "возвращает" заменен на очень логичный "выплевывает" спасибо Димыч
Ответитьа вот тут уже посложнее)
ОтветитьЭто ужас У меня было написано subscriber вместо subscribe и из за этого приложение работало некорректно Не обновляла state
Капец одна буква и все не робить
Идем дальше
2023 год. Курс классный. Redux ругается на createStore, требует legacy_createStore. С этим разобрался. Вопрос: в дальнейшем будет урок по configureStore из reduxjs/toolkit?
ОтветитьБля я дошел до Редакс и я буду сказать Реакт, Редакс я знаать будддду круууутаааа, айтикаааааа айтикаааааа кааамасууутраааа :::))))
ОтветитьВсе вроде было по плану и даже такая же ошибка была в конце, при перерендере страницы при изменении стора, но никак не мог найти ошибку, потому что стор выпадал в undefined. Решение оказалось простым, причину указал выше, обычная невнимательность. При перерисовке и изменении стейта аргументом передавал store, а присвоил state (store.getState())
ОтветитьУ меня вообще Редакс не подключается, фиг знает в чём проблема (
Ответитьосталось 47 лет😱🤣
Ответитьвоооу! круто! спасибо за урок! лечу пересматривать видео =)
Ответитьотличный ролик, необходимо было посмотреть 2 раза, чтобы понять полностью информацию
ОтветитьРебята, выручайте. Так и не прошёл белый экран после установки редакса!!! Помогите мне. Уже и сносил все, и по новой 42 урока, сохраняя в отдельной папке каждый урок.
ОтветитьДимыч, спасибо! Летим дальше!
ОтветитьЛучший!!!
ОтветитьВ смысле МЫ ВСЕ УМРЕМ? 😳🤣🤣🤣
Ответитьarigato, sensei
ОтветитьБожечки, насколько удобнее все стало. Осталось набить руку и параллельно добавлять свои фишки, чтобы не повторять за автором. У меня код отличается, и я дизайн немного добавил :) Спасибо за урок
ОтветитьРадуюсь что все это понимаю. Спасибо что так подробно все объясняешь
Ответитьппц, state дальше не передал в конце, и сидел тупил час...тяжко быть тупеньким как хлебушек)
ОтветитьА это нормально то, что у меня, когда вызывается метод subscribe, и в него не передается метод getState, а только вызывается ещё раз render, всё равно работает?
ОтветитьУра, всех поздравляю господа, мы дошли до Redux!) Дима, спасибо!)
ОтветитьА может былобы целесообразно добавить версию урока с Redux Toolkit если это возможно Димычь?
Он более простой к понимании.
Поправьте если не прав.