启动新项目时应该使用React挂钩吗?

时间:2019-04-22 04:46:44

标签: javascript reactjs react-hooks

标题应该给您大致的概念。我(我的公司)想开始一个新项目,这是使用React在Angular v1中编写当前网站的重启。 我想知道现在是在生产中使用React Hooks的好时机,如果是的话我将承担什么风险。

PS:没有正确的答案,我只想在实施之前征求一些意见。预先感谢。

2 个答案:

答案 0 :(得分:1)

到目前为止,钩子在可测试性和调试方面存在一些问题。钩子的状态无法通过调试器跟踪在组件实例上,就像使用类组件一样,这只能通过React开发工具来实现。酶doesn't fully support hooks呢。挂钩可能比组件生命周期方法更难模拟或监视,因为这无法在组件实例上完成。

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

useEffectuseLayoutEffect函数范围存在一些众所周知的问题,这些问题与setTimeout,事件和其他基于回调的API不能很好地配合使用({{3}中介绍了解决方法}。

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 :(得分:-1)

您可以随时尝试,但是我不建议您这样做,因为该技术还处于早期阶段,请先尝试使用类组件,然后再评估使用挂钩。

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