Reactjs useMemo正在调用每个渲染函数

Reactjs useMemo正在调用每个渲染函数,reactjs,react-hooks,Reactjs,React Hooks,我很难让UseMoom在react工作。请看下面非常简单的react应用程序: import React, { useMemo } from "react"; const testfunc = () => { console.log("testfunc"); return true; }; function App() { const a = useMemo(() => testfunc(), []); return &l

我很难让UseMoom在react工作。请看下面非常简单的react应用程序:

import React, { useMemo } from "react";

const testfunc = () => {
  console.log("testfunc");
  return true;
};

function App() {
  const a = useMemo(() => testfunc(), []);

  return <div className="App">My App</div>;
}

export default App;
import React,{usemo}来自“React”;
常量testfunc=()=>{
log(“testfunc”);
返回true;
};
函数App(){
常量a=useMemo(()=>testfunc(),[]);
返回我的应用程序;
}
导出默认应用程序;

您认为“testfunc”应该在控制台中出现多少次?应该是一个,但结果是两个。我做错了什么?

让我们检查一下:您是否在其他地方调用了
testfunc
?如果没有,你的价值观就会被记住<当初始化应用程序组件出现以下情况时,代码>testfunc将只调用一次:

让我们检查一下我的示例,只需使用state每1秒重新渲染一次组件

import React, { useMemo, useState } from "react";

const testfunc = () => {
    console.log("testfunc");
    return true;
};

function App() {
    const [state, setState] = useState(false);
    const a = useMemo(() => testfunc(), []);
    console.log(a);

    useEffect(() => {
        setInterval(() => setState(!state), 1000);
    }, [])

    return <div className="App">My App</div>;
}
import React,{usemo,useState}来自“React”;
常量testfunc=()=>{
log(“testfunc”);
返回true;
};
函数App(){
const[state,setState]=使用状态(false);
常量a=useMemo(()=>testfunc(),[]);
控制台日志(a);
useffect(()=>{
设置间隔(()=>setState(!state),1000);
}, [])
返回我的应用程序;
}