栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

何时使用基于ES6类的React组件和功能性ES6 React组件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何时使用基于ES6类的React组件和功能性ES6 React组件?

你有正确的主意。如果您的组件只做一些道具和渲染,那么功能就可以了。您可以将它们视为纯函数,因为在给定相同的道具的情况下,它们始终将呈现并表现相同的行为。而且,他们不在乎生命周期方法或拥有自己的内部状态。

因为它们是轻量级的,所以将这些简单的组件作为功能组件编写是相当标准的。

如果您的组件需要更多功能(例如保持状态),请改用类。

编辑 :以上大部分是正确的,直到引入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

关于何时在功能组件上使用类的建议,Facebook正式建议尽可能使用功能组件。顺便说一句,我听到很多人讨论出于性能原因不使用功能组件,特别是

“事件处理功能在功能组件中按渲染重新定义”

虽然正确,但请考虑您的组件是否真的以值得关注的速度或体积进行渲染。

如果是这样,则可以防止使用

useCallback
useMemo
挂钩重新定义功能。但是,请记住,这可能会使您的代码(微观上)的性能变差。

但老实说,我从未听说过重新定义功能是React应用程序的瓶颈。过早的优化是万恶之源-遇到问题时请担心



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575160.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号