Ответ 1
Вам нужен только компонент class
когда вы:
- нужно состояние компонента или
- нужны методы жизненного цикла. такие как
componentDidMount
и т.д.
Я пытаюсь понять, когда использовать функциональные компоненты React по сравнению с классами и читать из документов, которые они действительно не вникают в детали. Можете ли вы дать мне некоторые основные примеры ниже, когда вы хотите, чтобы какая-либо особенность класса составляла компонент?
Функциональный компонент менее мощный, но более простой и действует как компонент класса только с одним методом render(). Если вам не нужны функции, доступные только в классе, мы рекомендуем вам вместо этого использовать функциональные компоненты.
Вам нужен только компонент class
когда вы:
componentDidMount
и т.д.Если мы используем Redux, будет два вида компонентов:
Создатель Redux Дан Абрамов написать статью Презентационные и контейнерные компоненты:
Презентационные компоненты пишутся как функциональные компоненты, если они не нуждаются в состоянии, перехватах жизненного цикла или оптимизации производительности.
Хотя мы не используем Redux. Мы также можем разделить компоненты на Презентационные компоненты и Контейнерные компоненты.
Статья Cory House React Stateless Функциональные компоненты: девять побед, которые вы, возможно, упустили, дайте мне знать о преимуществах функциональных компонентов, функциональных компонентов больше:
Но функциональные компоненты не имеют состояния, что является его пределом.
Но, к счастью, в большинстве случаев нам не нужно государство.
Функциональные компоненты без сохранения состояния полезны для тупых/презентационных компонентов. Презентационные компоненты сосредоточены на пользовательском интерфейсе, а не на поведении, поэтому важно избегать использования состояния в презентационных компонентах. Вместо этого состояние должно управляться компонентами-контейнерами более высокого уровня или через Flux/Redux/etc. Функциональные компоненты без сохранения состояния не поддерживают методы состояния или жизненного цикла. Это хорошая вещь. Зачем? Потому что это защищает от лени.
Видите, всегда хочется добавить состояние в презентационный компонент, когда вы спешите. Это быстрый способ взломать функцию. Поскольку функциональные компоненты без сохранения состояния не поддерживают локальное состояние, вы не можете легко взломать какое-либо состояние в момент лени. Таким образом, функциональные компоненты без состояния программно обеспечивают поддержание чистоты компонента. Вы вынуждены поставить управление состоянием там, где оно принадлежит: в компонентах контейнера более высокого уровня.
Функциональный компонент
Пример:
const Foo =()=>
{
return <Text>Hi there!</Text>
}
Компонент класса
Пример:
class Foo extends Component {
render(){
return <Text>Hi There!</Text>
}
}