мне пример, у него все работает.. я сделал как он, у меня не работает... https://github.com/dimafrombatumi/RecipeMeApp/tree/experimental суть проблемы: если я в сторе меняю данные и сохраняю файл при запущенном приложении оно рендерится, но данные не приходят в флетлист-он пуст... Что я сделал не так...? стор в файле recipe.js. Флет лист в файле- MasonryList.js
Попробуй на stackOverflow вопрос задать
стор и не обновится с хотрелоадом, ты же делаешь export const recipes = new Recipes()
такс.. а что нужно экспортировать тогда?
не, ты всё правильно делал, просто если меняешь что-то в сторах прими за правило перезапускаться
но представь, если у пользователей запушено приложение, и в этот момент я меняю что-то в бд.. Значит у них оно ляжет так же как у меня на видео? Или я что-то не так понимаю?
нет, т.к. твой класс не поменяется. в твоем итоговом сторе, в getRecipies у тебя будет запрос к апи. ты добавил в базу, приложение обратилось к апи, наполнило рецепты, но код класса то не поменялся
понял! Но почему тут у @gblack9 не падает приложение когда меняешь в сторе? https://snack.expo.dev/@vovkasm/upbeat-orange
хз ) может потому, что всё в одном файле
мне тоже кажется что из-за того что он прямо импортирует стор.. а я через контекст...
Я сейчас импортнул стор прямо без контекста и хотрелоад заработал! Интересно как можно это сделать с контекстом...
Вот держи другой, там твоей проблемы нет – https://snack.expo.dev/@vovkasm/mobx-sample. Ну почти. Я читал ваши переписки, читал и долго не мог понять что же нужно... Для меня fast refresh просто всегда являлся приятным дополнением, но если не работал или глючил – "не беда"... И использую я его лишь при верстке, а т.к. из компонентов вытащена вся логика (вот прям максимум), то и глючил fast refresh (а перед этим HMR редко). Ну да, когда я менял что-то в глобальных, как его, "сторах" по вашему, то приходилось перезапускать приложение. Но фишка в том, что это относительно редкий для меня кейс. Вся разработка моделей происходит без участия реакта через тесты, мне даже видеть приложение не надо. Мне даже не надо чтоб был какой-то там эмулятор запущен, чтоб выполнить 50-60% кода приложения ))) А теперь более интересное. Ваша проблема не в том, что вы меняете данные, а в том что в одном файле с этими данными определен контекст. Именно с этим у fast refresh какой-то глюк, не знаю какой, мне это не интересно. Но суть в том, что fast refresh перегружает весь файл. Проверить легко – в моем примере выше данные модели лежат в одном файле и её можно легко менять, всё рефрешится. А вот создание контекста в другом файле и если его хоть чуть изменить, то всё... ошибка. 😉
спасибо за ваше время и ответ! Я ни на что не претендую(какую-то свою правоту, или глубокие знания) мне ещё далеко до вашего опыта.. и честно скажу, что не все понимаю о чем вы говорите.. Но +- понял.. Посмотрел ваш код и есть вопрос: в файле где контекст создается, там вы его как-то по другому(не как обычно это в реакте делается) создаёте.. ну т.е. storeProvider, consumer, useStore()..и в этом же файле ещё import { makeAutoObservable } from "mobx"; -для чего он нужен именно в файле контекста? извините что столько вопросов, хочу хорошо понять все это. Спасибо!
Импорт makeAutoObservable? Просто забыл убрать при рефакторинге (все эти файлы же были одним до этого) Не нужен он там, удалил 😄
а по-поводу создания контекста?))
А в чем вопрос? Вы сказали, что я немного не так его создаю, как обычно это в реакте делается. Но я его как раз создаю именно так, как в документации описано: вызываю createContext, и использую компоненты, что он вернул. Заодно, чтоб уменьшить кол-во сущностей в основном коде сделал хук, но это чисто чтоб не писать непонятную конструкцию с useContext(ctx) по всему коду – у вас же будут сотни компонентов, которым стор нужен. В общем, с моей точки зрения, я как раз там "всё как в учебнике" использую... А что именно смутило/удивило?
Обсуждают сегодня