атрибут), и так эффективно, остается только один «источник правды» ..

читалэта статья, В части «Контролируемые компоненты» есть предложение:

Мы можем объединить их, сделав состояние Реакта «единственным источником истины».

Что означает «единый источник правды»?

 Scott Marcus08 нояб. 2017 г., 16:01
Я не читал статью, но кажется очевидным, что они говорят о объединении двух источников данных в один, так что есть только одно место для поиска самых актуальных данных.

Ответы на вопрос(2)

Решение Вопроса

в статье, которую вы связали, говорится о «контролируемых» и «неконтролируемых» компонентах.

По сути, когда вы хотите реализовать «единый источник правды», вы хотите сделать ваши компоненты управляемыми.

По умолчанию поля ввода не контролируются, что означает, что они будут отображать данные из DOM, а не из состояния.

Однако если вы вместо этого сделаете свой вход прослушивающим состояние (следовательно, сделаете его управляемым), он не сможет изменить его значение, пока вы не измените состояние.

Первый эффект, который вы заметите, заключается в том, что после добавления значения свойства к нему, когда вы вводите, ничего не изменится. И если вы добавитеonChange метод, который изменяет состояние, это будет полностью контролируемый компонент, который слушает только один источник правды; состояние, а не события DOM.

-

Это также связано содносторонняя привязка данных, Это означает, что существует только одно место, которое представляет состояние приложения, и ваш пользовательский интерфейс слушает его. И пользовательский интерфейс прослушивания изменится, только если данные в этом месте изменятся, и никогда больше.

-

Также это может быть полезно:https://redux.js.org/docs/basics/DataFlow.html

В приложениях React-Redux, когда ваш Redux является единственным источником правды, это означает, что единственный способ изменить ваши данные в пользовательском интерфейсе - это отослать избыточное действие, которое изменит состояние внутри избыточного редуктора. И ваши компоненты React будут наблюдать за этим редуктором, и если этот редуктор изменится, то и сам интерфейс тоже изменится. Но никак иначе, потому что состояние Redux - единственный источник правды.

Вот как это выглядит в мире Redux:

Практическим примером будет то, что у вас есть магазин Redux, который содержит элементы, которые вы хотите отобразить. Чтобы изменить список отображаемых элементов, вы не должны изменять эти данные нигде, кроме как в хранилище. И если это изменится, все остальное, что с этим связано, должно измениться.

 Kunok08 нояб. 2017 г., 18:12
@ xs0 Это правда, моя ошибка. История остается похожей. Я добавил дополнительную информацию в предыдущем комментарии, а также добавил информацию, чтобы ответить, которая относится к статье, на которую вы ссылались.
 Kunok08 нояб. 2017 г., 18:04
@ xs0 В React действует то же правило, просто замените избыточность компонентом контейнера. Все дочерние компоненты получат доступ к данным компонента контейнера через реквизиты. Вы также передаете все действия (в данном случае методы из контейнера) дочерним элементам (используйте.bind(this) если вам нужно использоватьthis ключевое слово внутри этих методов). Когда событие происходит, дочерние компоненты уведомят контейнер об этом, и контейнер изменит свое состояние. Поэтому все дети будут обновляться от него. Я бы порекомендовал почитать о шаблоне проектирования «контейнер-презентатор» для более глубокого понимания этого подхода и его преимуществ.
 xs008 нояб. 2017 г., 17:56
Этот вопрос не имеет ничего общего с Redux, который вы бы знали, если бы потрудились проверить, какая статья была связана ...

<input> контролируется браузером, а не JavaScript. Если вы также сохраняете значение такого ввода в javascript (по любой причине), это означает, что есть по крайней мере «два источника правды» - то, что браузер считает значением, и то, что ваш код считает значением.

С React «контролируемые компоненты», эти два состояния / значения всегда совпадают, потому что React всегда гарантирует, что браузер (<input>s) значение равно тому, которое вы предоставляете из JavaScript (используяvalue атрибут), и так эффективно, остается только один «источник правды» ..

Ваш ответ на вопрос