Порядок жизненного цикла компонентов с подключением react-redux и данными redux

Все мы знаем, что constructor -> componentWillMount -> componentDidMount - это порядок исполнения.

Теперь, когда в игру вступает redux и пытается получить доступ к свойствам redux в жизненном цикле нашего компонента. Каков порядок, в котором подключение выполнит, чтобы игнорировать данные доступны методы жизненного цикла и обновлять данные до redux. Возможности

1. Connect (DATA AVAILABLE) -> constructor & componentWillMount & componentDidMount

2. constructor -> Connect (DATA AVAILABLE) -> componentWillMount & componentDidMount

3. constructor -> componentWillMount -> Connect (DATA AVAILABLE) -> componentDidMount

4. constructor -> componentWillMount -> componentDidMount -> Connect (DATA AVAILABLE) 

и является ли порядок последовательный или зависит от загружаемыми данными?

и чем отличается реагировать и реагировать родным

и можно ли определять свойства redux как требуется в PropType

Можете ли вы предоставить свой вариант использования для лучшего понимания проблемы

abby37 07.06.2018 10:14

Я надеюсь, что это общий сценарий и нет конкретного варианта использования @ abby37

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

Ответы 2

Первоначальный порядок выполнения будет -

Подключить (ДАННЫЕ ДОСТУПНЫ) -> конструктор & componentWillMount & Render & componentDidMount

Когда сайт запускается, redux connect сначала инициализируется с его состояниями и действиями по умолчанию перед жизненными циклами монтирования компонентов. Однако, если в redux есть вызовы API, жизненные циклы монтирования компонентов не будут ждать данных. Вместо этого будут вызваны жизненные циклы обновления компонентов, если компонент уже смонтирован и redux возвращает данные.

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

connect - это HOC, который обертывает ваш компонент, поэтому метод жизненного цикла компонента идет после жизненного цикла подключения. Для простоты понимания, вы можете представить себе соединение, написанное так:

const connect = (mapStateToProps, mapDispatchToProps) => (Component) => {
    return class ReduxApp extends React.Component {
        // lifecycle of connect
        render() {
            return (
                 <Component {...mapStateToProps(state)} />
            )
        }
    }
}

Теперь всякий раз, когда ваше состояние обновляется, connect будет неглубоко сравнивать список реквизитов, которые должны быть возвращены в компонент, и, если есть изменение, обновите реквизиты, после чего метод жизненного цикла компонента запускается, как обновляется реквизит.

Короче, исполнение изначально

Connect (DATA AVAILABLE) -> constructor & componentWillMount & componentDidMount

После обновления данных

Connect (DATA AVAILABLE) -> componentWillReceiveProps/getDerivedStateFromProps -> componentWillUpdate -> render -> componentDidUpdate

так что отвечая на ваш ответ, который отвечает на все мои вопросы. 1. Connect (ДАННЫЕ ДОСТУПНЫ) -> constructor & componentWillMount & componentDidMount - это порядок 2. порядок выполнения согласован 3. и одинаков для реакции и нативной реакции 4. и да, это нормально определить required в PropType для свойств redux

Gaudam Thiyagarajan 07.06.2018 12:24

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