Каков жизненный цикл компонента React в контексте Redux?

Я пытаюсь реструктурировать свое приложение React вокруг Redux и запутался.

один сайт говорит:

Components receive props from their parent. These props should not be modified inside the component.

Другая говорит:

You used to be able to change props with setProps and replaceProps but these have been deprecated. During a component’s life cycle props should not change (consider them immutable).

Так что я должен считать реквизиты неизменными на протяжении всего времени жизни компонента. Хорошо, тогда альтернативой является состояние (состояние Реагировать, которое, как я понимаю, сильно отличается от состояния Redux. Хорошо ...)

Состояние реакции - это изменяемое состояние компонента. Он принадлежит компоненту и, в отличие от свойств, может изменяется в течение жизненного цикла компонента. В ПОРЯДКЕ. Я полностью понимаю это вне контекста Redux. Каждый компонент владеет своим собственным изменяемым состоянием и передает то, что ему нужно, своим дочерним элементам в качестве свойств, которые являются неизменяемыми для дочерних элементов. Когда состояние изменяется, это заставляет компонент повторно отображать своих дочерних элементов, предоставляя им новые свойства по мере необходимости.

Теперь представьте Redux. Хранилище Redux содержит состояние не замужем для всего приложения. Есть ли у этого заменять какое-либо состояние React? Все ли элементы состояния Redux передаются компонентам React в качестве свойств? Есть mapStateToProps, который, кажется, предполагает это. Итак, могу ли я полностью забыть о состоянии React?

Я считаю, что жизненный цикл компонента длится, скажем, до тех пор, пока пользователь может видеть объект на экране. Но если реквизиты не могут измениться в течение жизненного цикла компонента, и теперь все (с точки зрения React) является реквизитом, значит ли это, что жизненный цикл длится ровно столько, сколько требуется Redux для обновления своего хранилища?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
708
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сообщение Люси Бейн хорошо объясняет, но обратите внимание, что упоминания setProps относятся к старой версии React очень, а связанные примечания к выпуску React 0.14 описывают их как полезные только для обновления компонента верхнего уровня в приложении. . Сегодня, если вам действительно нужно обновить свойства корневого компонента, вы должны вызвать ReactDOM.render(<MyApp newProp = {123} />) во второй раз.

См. В Запись в FAQ по Redux о разделении состояния между компонентами Redux и React некоторые практические правила, которые помогут решить, где должна располагаться каждая часть состояния.

Я также рекомендую вам прочитать Документация React-Redux, чтобы понять, как они подходят друг другу.

Ответ принят как подходящий

Как отметил Дэн Абрамов в своей знаменитой статье Возможно, вам не понадобится редукция, Redux следует использовать только тогда, когда вам нужен упорство во всем приложении. Когда данные недолговечны (представьте себе выбранный аккордеон, открытый в простом представлении), вы можете безопасно сохранить свое состояние в локальном состоянии. Так:

Заменяет ли это сейчас (Redux) какое-либо состояние React? Если хотите, то да. Но это не обязательно.

Все ли элементы состояния Redux передаются компонентам React в качестве свойств? Обычно да.

Итак, могу ли я полностью забыть о состоянии React? Да, ты можешь. Хотя это не обязательно, и состояние local / redux может счастливо жить вместе.

[...] означает ли это, что жизненный цикл длится ровно столько, сколько требуется Redux для обновления своего хранилища? Рендеринг происходит при изменении любого состояния (локального или избыточного).

Итак, каждый рендер запускает новый жизненный цикл?

Carl Manaster 17.12.2018 17:57

Жизненный цикл не является настоящим «циклом», некоторые жизненные циклы происходят только один раз (willMount, willUnmount, didMount), другие, поскольку willReceiveProps или shouldUpdate будут запускаться при каждом рендеринге.

Mosè Raguzzini 17.12.2018 18:01

Другие вопросы по теме