你有正确的想法。如果你的组件除了接收一些 props 和渲染之外,没有做更多的事情,那就去使用函数式的。您可以将它们视为纯函数,因为在给定相同的 props 的情况下,它们将始终呈现相同的行为。此外,他们不关心生命周期方法或拥有自己的内部状态。
因为它们是轻量级的,所以将这些简单的组件编写为功能组件是非常标准的。
如果您的组件需要更多功能,例如保持状态,请改用类。
更多信息:https : //facebook.github.io/react/docs/reusable-components.html#es6-classes
编辑:以上大部分内容都是正确的,直到引入 React Hooks。
componentDidUpdate可以用 复制useEffect(fn),其中fn是重新渲染时运行的函数。
 
componentDidMount方法可以用 复制useEffect(fn, []),其中fn是重新渲染时运行的函数,[]是组件将为其重新渲染的对象数组,当且仅当自上次渲染以来至少有一个值发生了变化。由于没有useEffect(),在第一次安装时运行一次。
 
state可以用 复制useState(),其返回值可以解构为状态的引用和可以设置状态的函数(即const [state, setState] = useState(initState))。一个例子可以更清楚地解释这一点:
 
const Counter = () => {
  const [count, setCount] = useState(0)
  const increment = () => { 
    setCount(count + 1);
  }
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>+</button>
    </div>
  )
}
default export Counter
顺便说一句,我听到很多人讨论出于性能原因不使用功能组件,特别是
“在功能组件中每个渲染都重新定义了事件处理函数”
虽然是这样,但请考虑您的组件是否真的以如此值得关注的速度或体积渲染。
如果是,您可以防止使用useCallback和useMemo钩子重新定义函数。但是,请记住,这可能会使您的代码(微观上)性能更差。
但老实说,我从未听说过重新定义函数是 React 应用程序的瓶颈。过早的优化是万恶之源——当它出现问题时要担心