Это поведение по умолчанию? : ДА, это так.
Это известно как live-reloading
, когда изменение в вашем файле обновляет ваш локальный сервер и перезапускает приложение, устанавливая все состояния на начальные. Вы упомянули, что состояние приложения потеряно.
Существует еще одна концепция, называемая hot-reloading
, которая предотвращает это. Горячая перезагрузка просто заменит модули, которые были изменены во время работы приложения. Это не приведет к обновлению sh приложения. Он просто обновит страницу с изменениями без перезагрузки и, таким образом, сохранит состояние приложения. Однако состояние компонента, то есть состояние реакции, не поддерживается.
Теперь, когда вы создаете проект реакции с использованием CRA, функция горячей перезагрузки встроена. Вы можете попробовать ее, запустив свой app и изменив некоторые css. Вы заметите, что приложение не обновляет sh, но изменения применяются !!
Однако, если вы попытаетесь сделать это в файле JSX, все приложение изменится. Это связано с тем, что необходимо внести некоторые изменения, чтобы включить горячую перезагрузку в файле JSX.
Go в индекс. js и напишите эту строку кода:
if (module.hot && process.env.NODE_ENV !== 'production') {
module.hot.accept();
}
Если вы go внесете изменения в свой JSX-файл сейчас, вы увидите, что обновления применяются без refre sh.
НО, состояние реакции не сохраняется. Существует библиотека под названием react-hot-loader
, которая также может помочь вам в поддержании состояния реакции. Попробуйте!