Basic Flashcards

1
Q

Можно ли модифицировать пропсы?

A

Нет, все компоненты реакт должны вести себя как чистые функции по отношению к пропсам.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Какие проблемы могут возникнуть с асинхронностью setState()?

A

Так как пропсы и стейт иногда могут обновляться асинхронно, нельзя полагаться на их предыдущие значения для вычисления предыдущего:

this.setState( { counter: this.state.counter + this.props.increment } )

В таких случаях лучше использовать вторую форму setState, которая принимает на вход функцию:

this.setState( 
   (prevState, updatedProps) => ( {
      counter: state.counter + updatedProps.increment
   } )
 )
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

На какие две общие фазы разделяется одна итерация жизненного цикла компонента?

A

Render Phase - манипуляции с виртуальным DOM, могут быть приостановлены, отменены или перезапущены реактом. Эта фаза включает в себя выполнение render().

Commit Phase - в этой фазе можно напрямую читать или модифицировать DOM. Можно запускать побочные эффекты (как до, так и после того как реакт обновит DOM).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какие три основных этапа в жизненном цикле компонента?

A

Монтирование -> Изменение -> Отмонтирование

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие этапы проходит компонент при монтировании?

A
  1. Запуск конструктора
  2. getDerivedStateFromProps()
    • нет доступа к this
    • безопасная альтернатива
      componentWillReceiveProps()
  3. componentWillMount() - legacy
  4. render() - обязательный метод
  5. Обновление DOM и refs
  6. componentDidMount
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Какие этапы проходит компонент при монтировании?

A
  1. Запуск конструктора
  2. getDerivedStateFromProps(state, …)
    • нет доступа к this
    • безопасная альтернатива
      componentWillReceiveProps()
  3. componentWillMount() - legacy
  4. render() - обязательный метод
  5. Обновление DOM и refs
  6. componentDidMount
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

По каким причинам может запуститься обновление компонента?

A
  • Обновление пропсов
  • setState()
  • forceUpdate()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Какие этапы проходит компонент при обновлении?

A
  1. getDerivedStateFromProps(state, …)
    • нет доступа к this
    • безопасная альтернатива
      componentWillReceiveProps()
  2. shouldComponentUpdate() - может отменить обновление
  3. componentWillUpdate() - legacy
  4. render() - обязательный метод
  5. getSnapshotBeforeUpdate();
  6. Обновление DOM и refs
  7. componentDidUpdate
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какой метод вызывается когда компонент отмонтируется? Для чего обычно используется этот метод?

A

componentWillUnmount(). Нужен для подчистки асинхронных таймеров и обработчиков событий в компоненте (если их не чистить, они останутся в памяти).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какой метод вызывается в элементе если его работа завершается с ошибкой?

A

getDerivedStateFromError()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Какой метод вызывается в родительском элементе если работа зависимого элемента завершается с ошибкой?

A

componentDidCatch()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Компонент имеет реализацию shouldComponentUpdate, которая возвращает false в любом случае. Что произойдет в жизненном цикле компонента при вызове forceUpdate?

A

Компонент будет обновлен, так как forceUpdate непосредственно вызывает render и getShapshotBeforeUpdate, игнорируя shouldComponentUpdate.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что произойдет, если у элемента изменятся только атрибуты?

A

При сравнении двух React DOM-элементов одного типа, React смотрит на атрибуты обоих, сохраняет лежащий в основе этих элементов DOM-узел и обновляет только изменённые атрибуты.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Каким образом React обходит элементы для сравнения?

A

Рекурсивно

How well did you know this?
1
Not at all
2
3
4
5
Perfectly