React可以随意多次调用组件函数(事实上,在严格模式下,它通常会调用两次,以确保您没有像现在这样做有副作用的坏事)。
下面是一个如何使用
useEffect
.
loadData
这里只是一个模拟函数,返回数据需要500毫秒,但也可以是其他任何函数。
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function loadItems() {
const data = [
{ grupoId: 1, name: "test1" },
{ grupoId: 2, name: "test2" },
{ grupoId: 1, name: "test3" },
{ grupoId: 1, name: "test4" },
{ grupoId: 3, name: "test5" },
{ grupoId: 2, name: "test6" },
];
await delay(500);
return data;
}
function App() {
const [data, setData] = useState([]);
React.useEffect(() => {
loadItems().then(setData);
}, []); // <- empty dependency array has this effect only run once
return <div>{JSON.stringify(data)}</div>;
}
export default App;