为什么我的 create-react-app console.log 两次?

IT技术 reactjs create-react-app use-state
2021-05-02 05:21:24

我只是使用 create-react-app 设置制作一个简单的食谱获取应用程序,但是当我尝试记录响应时,它记录了两次。我倒退并删除代码,直到它停止发生,无论出于何种原因,当我使用状态挂钩时它开始:

import React, { useState } from 'react';
import './App.css';


function App() {
  const APP_ID = '092fa53f';
  const APP_KEY = '6fcf8c591c129cc3d01aefbda0d8a4d8';
  const recipe_url = `https://api.edamam.com/search?q=chicken&app_id=${APP_ID}&app_key=${APP_KEY}`;

  const [recipes, setRecipes] = useState(0);

  return (
    <div className="App">
      {console.log('test')}
    </div>
  );
}

export default App;
1个回答

这是故意的,它是React.StrictMode(专门用于检测意外副作用)的一部分:

严格模式无法自动为您检测副作用,但它可以通过使它们更具确定性来帮助您发现它们。这是通过有意重复调用以下函数来完成的:

  • 类成分constructorrendershouldComponentUpdate方法
  • 类组件静态getDerivedStateFromProps方法
  • 功能组件体
  • 状态更新器函数(的第一个参数setState
  • 函数传递给useStateuseMemouseReducer

如果StrictMode从 中删除元素index.js,您将看到输出仅记录一次:

ReactDOM.render(<App />, document.getElementById('root'));

请注意,在严格模式下,这只发生在开发中,而不是生产中。