Vue запускает повторную визуализацию компонента с помощью механизма реактивности, поэтому разработчики могут напрямую изменять состояния. Vue обнаружит изменение состояния и вызовет повторное рендеринг компонента.
React запускает повторную визуализацию компонента вручную setState
, и React проверяет VDOM, чтобы проверить, следует ли выполнить повторную визуализацию или нет. Разработчикам рекомендуется не изменять состояние напрямую, а создавать новое для замены исходного состояния, чтобы исходное и новое состояния могли эффективно shallowEqual
(неизменный подход).
Например, существует следующее состояние:
state = { a: 1, b: 2 }
// mutate state in Vue
state.a = 3
// mutate state in React
this.setState({...state, a: 3 })
Кажется, что механизм реактивности более интуитивен и может писать меньше кода. Интересно, каковы плюсы и минусы между этими двумя подходами? Какой сценарий я должен выбрать один перед другим?