#javascript #reactjs
#javascript #reactjs
Вопрос:
Я изучаю ReactJS, и сейчас я новичок. Однако концепция управления состоянием меня поражает. У меня есть вопрос, связанный только с этим. Итак, например, у меня есть приложение React, которое запущено на локальном хосте. Управление состоянием не имеет конфликта, потому что для этого существует не более одного пользователя. Теперь предположим, что приложение размещено на сервере, и теперь его может использовать любой пользователь в Интернете. Разве сейчас не было бы конфликтов состояний? Например, если у меня есть состояние «dark_theme: false» по умолчанию. Если какой-либо пользователь устанавливает для него значение true, почему оно не изменится для всех пользователей, обращающихся к приложению?Я не использую какое-либо локальное хранилище браузера. Все поддерживается React.
Заранее спасибо!
Ответ №1:
Потому что React.js приложения выполняются на стороне клиента (если не реализовано иное) и просто не имеют встроенного волшебства для синхронизации изменений состояния через Интернет с другими пользователями. (Когда вы «размещаете приложение [React] на сервере», вы обычно просто загружаете статический HTML и связанный JavaScript; серверного компонента нет.)
Если вы не используете локальное хранилище ( localStorage
, sessionStorage
), состояние находится только в памяти и будет забыто, как только вы закроете вкладку.
Комментарии:
1. Спасибо, даже я думал в этом направлении. Я имею в виду, я знаю, что со стороны React было бы совершенно сомнительно, если бы состояния менялись таким образом. Я задал этот вопрос, потому что хотел знать, как состояние управляется для разных пользователей. Еще раз спасибо!
Ответ №2:
Например, если у меня есть состояние «dark_theme: false» по умолчанию. Если какой-либо пользователь устанавливает для него значение true, почему оно не изменится для всех пользователей, обращающихся к приложению?
Нет. Относитесь к состоянию как к локальному «бэкэнду» вашего приложения; оно находится в браузере для каждого пользователя точно так же, как и остальная часть интерфейсной части приложения. Это будет отличаться для каждого пользователя.