gpt4 book ai didi

javascript - 如何在 React JS 中加载页面时自动调用函数?(2020 年)

转载 作者:行者123 更新时间:2023-12-05 08:30:36 26 4
gpt4 key购买 nike

我正在尝试从 MongoDB 服务器获取 Notes 数组 notes 数组的示例如图所示

{
"_id" : ObjectId("5f240b9ab414f1377c4155e0"),
"title" : "Hello",
"content" : "World !",
"__v" : 0
}

/* 2 */
{
"_id" : ObjectId("5f240d45b414f1377c4155e1"),
"title" : "aaaaaaaaaa",
"content" : "aaa",
"__v" : 0
}

现在函数 getNote 从 MongoDB 获取注释然后使用 useState 我正在传递数组,现在我的问题是:我希望函数 getNote 在 React 页面加载时自动调用。下面是函数 getNote

function getNote() {
axios
.get("/")
.then((response) => {
setFinalNoteDB(response.data);

})
.catch((err) => {
if (err) {
console.log("error in app.jsx");
}
});

一般的app.jsx代码如下图

import React, { useState, Component } from "react";
import Header from "./Header";
import CreateArea from "./CreateArea";
import Footer from "./Footer";
import Note from "./Note";
import EnterNameTemplate from "./EnterNameTemplate";
import axios from "axios";

function App() {
const [finalNote, setFinalNote] = useState([]);
const [finalNoteDB, setFinalNoteDB] = useState([]);
// const [isNameThere, setIsNameThere] = useState(false);
function addNote(note) {
setFinalNote((prevNotes) => {
return [...prevNotes, note];
});
}
function deleteNote(id) {
setFinalNote((prevNotes) => {
return prevNotes.filter((singleNote, index) => {
return index !== id;
});
});
}
function getNote() {
axios
.get("/")
.then((response) => {
setFinalNoteDB(response.data);

})
.catch((err) => {
if (err) {
console.log("error in app.jsx");
}
});
}
return (
<div>
<Header />
<CreateArea addNote={addNote} />
{finalNoteDB.map((singleNote, index) => {
return (
<Note
key={index}
id={index}
title={singleNote.title}
content={singleNote.content}
deleteNote={deleteNote}
/>
);
})}

<Footer />
</div>
);

}

export default App;

希望你能明白我的问题! .

最佳答案

您可以使用 useEffect 钩子(Hook)。 Like this

 useEffect(() => {
let ignore = false;

if (!ignore) getNote()
return () => { ignore = true; }
},[]);

我使用了 ignore 变量来确保它不会在每次组件重新渲染时调用该函数。

关于javascript - 如何在 React JS 中加载页面时自动调用函数?(2020 年),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63193114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com