假设我有一个 App.jsx:
应用程序.jsx
const App = () => {
return (
<React.Fragment>
<NavBar />
<BooksList />
<TextEditor />
</React.Fragment>
)
}
export default App;
和是 2BooksList个TextEditor功能组件。在一个组件中,我能够将编辑器的内容保存到数据库中:
编辑器.jsx
const TextEditor = () => {
return(
<*editor related stuff*>
)
}
const SaveContent = ({ value, icon }) => {
return (
<SaveButton
onMouseDown={async () => {
console.log(JSON.stringify(value));
const response = await fetch('/add_book', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(value)
})
if (response.ok) {
console.log('response okay')
}
}}
>
<Icon icon={icon}></Icon>
</SaveButton>
)
}
这成功写入我的数据库。
我想让 BookList 组件在我保存/删除项目时自动更新数据库的内容。这是我目前拥有的 BookList 组件:
BooksList.jsx
const BooksList = () => {
const [books, setBooks] = useState([]);
useEffect(() => {
fetch('/get_books')
.then(response =>
response.json()
.then(data => {
setBooks(data)
})
);
}, [])
return (
<*list of saved editors*>
)
}
所以在加载时,如果数据库是空的,它什么也不显示。当我保存到数据库时,它什么也没显示,然后当我刷新页面时,它显示我想要取回的数据。我希望能够保存数据并自动看到上述组件刷新和更新。
我是 React 和 JS 的新手,所以任何指针都会很棒。我认为可能需要重写以使用基于类的组件来更轻松地管理状态?但我不确定。我的基本理解是,这useEffect()是基于类的安装方法的功能等价物。这让我相信这是可以做到的。但是,我读过有状态组件应该使用基于类的组件。
哆啦的时光机
元芳怎么了
郎朗坤
相关分类