Basic Flashcards
Можно ли модифицировать пропсы?
Нет, все компоненты реакт должны вести себя как чистые функции по отношению к пропсам.
Какие проблемы могут возникнуть с асинхронностью setState()?
Так как пропсы и стейт иногда могут обновляться асинхронно, нельзя полагаться на их предыдущие значения для вычисления предыдущего:
this.setState( { counter: this.state.counter + this.props.increment } )
В таких случаях лучше использовать вторую форму setState, которая принимает на вход функцию:
this.setState( (prevState, updatedProps) => ( { counter: state.counter + updatedProps.increment } ) )
На какие две общие фазы разделяется одна итерация жизненного цикла компонента?
Render Phase - манипуляции с виртуальным DOM, могут быть приостановлены, отменены или перезапущены реактом. Эта фаза включает в себя выполнение render().
Commit Phase - в этой фазе можно напрямую читать или модифицировать DOM. Можно запускать побочные эффекты (как до, так и после того как реакт обновит DOM).
Какие три основных этапа в жизненном цикле компонента?
Монтирование -> Изменение -> Отмонтирование
Какие этапы проходит компонент при монтировании?
- Запуск конструктора
- getDerivedStateFromProps()
- нет доступа к this
- безопасная альтернатива
componentWillReceiveProps()
- componentWillMount() - legacy
- render() - обязательный метод
- Обновление DOM и refs
- componentDidMount
Какие этапы проходит компонент при монтировании?
- Запуск конструктора
- getDerivedStateFromProps(state, …)
- нет доступа к this
- безопасная альтернатива
componentWillReceiveProps()
- componentWillMount() - legacy
- render() - обязательный метод
- Обновление DOM и refs
- componentDidMount
По каким причинам может запуститься обновление компонента?
- Обновление пропсов
- setState()
- forceUpdate()
Какие этапы проходит компонент при обновлении?
- getDerivedStateFromProps(state, …)
- нет доступа к this
- безопасная альтернатива
componentWillReceiveProps()
- shouldComponentUpdate() - может отменить обновление
- componentWillUpdate() - legacy
- render() - обязательный метод
- getSnapshotBeforeUpdate();
- Обновление DOM и refs
- componentDidUpdate
Какой метод вызывается когда компонент отмонтируется? Для чего обычно используется этот метод?
componentWillUnmount(). Нужен для подчистки асинхронных таймеров и обработчиков событий в компоненте (если их не чистить, они останутся в памяти).
Какой метод вызывается в элементе если его работа завершается с ошибкой?
getDerivedStateFromError()
Какой метод вызывается в родительском элементе если работа зависимого элемента завершается с ошибкой?
componentDidCatch()
Компонент имеет реализацию shouldComponentUpdate, которая возвращает false в любом случае. Что произойдет в жизненном цикле компонента при вызове forceUpdate?
Компонент будет обновлен, так как forceUpdate непосредственно вызывает render и getShapshotBeforeUpdate, игнорируя shouldComponentUpdate.
Что произойдет, если у элемента изменятся только атрибуты?
При сравнении двух React DOM-элементов одного типа, React смотрит на атрибуты обоих, сохраняет лежащий в основе этих элементов DOM-узел и обновляет только изменённые атрибуты.
Каким образом React обходит элементы для сравнения?
Рекурсивно