我应该使用useEffect()吗?

时间:2020-04-30 16:22:38

标签: reactjs

我知道useEffect每次在渲染组件时都会运行。我目前正在集成一个VideoConference应用程序,该应用程序在初始化后创建一个名为publisher的对象。 publisher可以更新。例如,我可以停用视频等。

我创建了两个按钮,用于将audiovideo的状态更改为0或1。然后将这些值传递给组件OTPublisher。我感到困惑的部分是我是否真的应该/需要使用useEffect?即使没有将useEffect直接插入组件中,它也可以双向工作。

<OTPublisher
  video={video}
  audio={audio}
  completionHandler={completionHandler}
>

OTPublisher.js

useEffect(() => {
  if (publisher) {
    audio ? publisher.publishAudio(true) : publisher.publishAudio(false);
    video ? publisher.publishVideo(true) : publisher.publishVideo(false);
  }
});

///

if (publisher) {
  audio ? publisher.publishAudio(true) : publisher.publishAudio(false);
  video ? publisher.publishVideo(true) : publisher.publishVideo(false);
}

1 个答案:

答案 0 :(得分:0)

useEffect的原因是因为它具有一些额外的功能,这些功能直接在组件中产生副作用,而不会像清理那样仅在依赖项发生更改时才执行效果。

使组件主要部分保持纯净的另一个重要原因是即将到来的并发模式:https://reactjs.org/docs/concurrent-mode-intro.html

并发模式极大地改变了组件渲染的方式,一次可以启用多个重渲染。 React.StrictMode是一个组件,可设置您的组件并为每个渲染实质上渲染两次,以模拟并发模式以确保您没有问题。