Как React управляет состоянием в рабочей среде

#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, почему оно не изменится для всех пользователей, обращающихся к приложению?

Нет. Относитесь к состоянию как к локальному «бэкэнду» вашего приложения; оно находится в браузере для каждого пользователя точно так же, как и остальная часть интерфейсной части приложения. Это будет отличаться для каждого пользователя.