我应该在启动新项目时使用React挂钩吗? [关闭]

问题描述 投票:1回答:2

标题应该给你一般的想法。我(我的公司)想要启动一个新项目,这是我们当前使用React在Angular v1中编写的网站的重新启动。我想知道这是否是在生产中使用React Hooks的好时机,以及如果是这样我将承担哪些风险。

PS:没有正确答案,我只想在实施前考虑一些意见。提前致谢。

javascript reactjs react-hooks
2个回答
1
投票

截至目前,钩子在可测试性和调试方面存在一些问题。无法使用组件实例上的调试器跟踪钩子的状态,因为它是使用类组件完成的,这只能通过React dev工具实现。酵素doesn't fully support hooks呢。钩子可能比组件生命周期方法更难模拟或间谍,因为这不能在组件实例上完成。

钩子有几个固有的问题,有时需要以违反直觉和过于复杂的方式解决。

useEffectuseLayoutEffect函数作用域存在众所周知的问题,这些问题不适用于setTimeout,事件和其他类型的基于回调的API(解决方法在this answer中有描述)。

没有与shouldComponentUpdate相对应的可能会导致组件嵌套以防止不必要的更新。这尤其适用于useContext。如果需要阻止更新,这并不比上下文Consumer好,并且需要使用嵌套组件:

const WrapperWithConsumer = () => {
  return <FooContext.Consumer>
    {({ foo }) => <PureWrappedComponent foo={foo}/>}
  </FooContext.Consumer>;
}

const WrapperWithHook = () => {
  const { foo } = useContext(FooContext);
  return <PureWrappedComponent foo={foo}/>
}

与任何其他最近的API一样,钩子限制项目与最新的React版本一起使用,防止其组件在旧项目中重用,并剥夺切换到替代实现的机会 - Preact,Inferno等。


-1
投票

你可以随时尝试,但我不推荐它,因为该技术仍处于早期阶段,首先尝试类组件,然后评估使用钩子。

也许这篇文章可以帮助你:https://blog.logrocket.com/react-hooks-lets-not-get-too-attached-11b0ac09b4b5

© www.soinside.com 2019 - 2024. All rights reserved.