Функция стрелки в ReactJS считается либо функциональным компонентом , либо просто функцией стрелки в зависимости от того, что они возвращают.
const CommentList = comments =>
<ul>
{
comments.comments.map(
(c, index) => (
<li key = {index}>{c.body}—{c.author}</li>
)
)
}
</ul>
Вышеуказанный компонент называется компонентом без состояния . Он ничего не делает, но делает реквизит. Нет состояний, крючков и т.п. c.
Но компоненты, которые могут иметь состояние, становятся возможными с помощью реагирующих крюков . То есть функциональный компонент может просто делать все, что делает компонент класса. Он может отображать состояния выполнять операции, а не просто возвращать только JSX (как компонент без состояния)
Чтобы понять это подробно, взгляните на Компонент функции реагирования
Чтобы сделать CommentList компонентом класса, можно сделать следующее:
class CommentList extends React.Component {
constructor(props) {
super(props);
}
render () {
/* destructuring props so that we can use "comments" prop directly instead of
using this.props.comments */
const {comments}=this.props;
return (
<ul>
{comments.comments.map((c, index) => (
<li key={index}>
{c.body}—{c.author}
</li>
))}
</ul>
);
}
}
TLDR; Разница между обычной функцией стрелки и функциональным компонентом заключается в типе возврата, т.е. функциональный компонент возвращает JSX.