为什么useState挂钩会导致React中不必要的重新渲染周期?

时间:2020-06-06 15:28:24

标签: reactjs react-hooks

为什么只这样定义状态:

const [flipCardDeg, changeFCDeg] = useState(0);

在正常功能组件中是否会导致额外的重新渲染周期? 而不是重新渲染1次,而是重新渲染两次。

我知道,如果在某处使用“ changeFCDeg”来更改状态,则应重新渲染,这样就可以了。但是为什么在开始时初始化所有内容时又重新渲染一次呢?

我应该担心有2次而不是一次的重新提交吗?如果可以,该如何处理?

1 个答案:

答案 0 :(得分:1)

只要检测到更改,就重新渲染。您可以尝试通过准确指定更改的含义来控制它。例如,像这样:

const getMoreData = false
const [flipCardDeg, changeFCDeg] = useState(0);
useEffect(() => {
  console.log('say something once')
  return () => {
    console.log('why say it again?')
  }
}, [getMoreData])  // will only run once unless getMoreData is changed