react组件这么写和用class写有什么区别?

const TodoList = ({todos, onTodoClick}) => {
    return (
        <ul>{
            todos.map (todo =>
                <Todo
                    key={todo.id}
                    {...todo}
                    onClick={() => onTodoClick(todo.id)}
                />
            )
        }</ul>
    )
};
阅读 3.8k
5 个回答

基本没啥区别。用class写的组件可以拥有继承自React.Component的方法,比如render,componentWillMount之类的,函数写的组件没有这些方法,也没有state。如果组件需要在生命周期内做某些事情,那就用class,否则用函数。

这是无状态组件的写法,比 class 写法拥有更好的性能。这种写法没有 state,不能操控生命周期。如果没有复杂的逻辑,建议用此写法

无状态组件使用的是纯函数,所以可以根据纯函数的特点来优化,从而提高性能。但是高性能的代价就是不能操控生命周期,组件状态等。

这样写是无状态的写法,如果只是写一个纯纯只为展示的组件,这样是可以的,如果需要改变其中任何一项,去展示不同的时候,这个方法就不适合了。

如果只是一个没有 state 的组件的话,这么写和用 class 写其实没差别,可能会比用 class 性能更高,因为没有继承 Component

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题