reactjs 为什么我们在react中设置useState方法时会出错?

ovfsdjhp  于 2023-03-29  发布在  React
关注(0)|答案(1)|浏览(173)

这里我使用的是reactusestate hook,我将usestate设置为

const { blogs, setBlogs } = useState([{postId:"",blogCity:"",blogTitle:"",username:"",time:""}]);

现在我想在这个usestate中存储多个博客,但是useEffect钩子返回setBlogs的错误不是函数。useEffect的代码是

useEffect(() => {
        fetchProfileImage();
        fetchPost();
        getBlogs();
    }, [postImage,blogs,setBlogs])

我从getBlogs函数中获取了博客,该函数是

const getBlogs =async()=>{
    const response = await fetch(
        `http://localhost:5000/api/post/getPost/${username}`, {
        method: "POST",
        headers: {
            'Content-Type': 'application/json',
            'auth-token': localStorage.getItem("token")
        }
    });
    const json = await response.json();
    console.log(json.result);
    setBlogs( json.result);
    console.log("here",blogs);
}

博客数据从数据库中正确获取,但无法通过setBlogs存储。如何在blogs usestate中存储博客数据。错误是

User.js:75 Uncaught (in promise) TypeError: setBlogs is not a function
    at getBlog

使用setBlogs usestate时发生错误。

cyej8jka

cyej8jka1#

useState返回两个元素的数组:一个表示当前状态的对象和一个状态的setter。你必须将useState返回的内容解构为一个包含两个对象的数组,而不是像现在这样包含两个属性的对象。
错误:const { blogs, setBlogs } = useState([...]);
正确:const [ blogs, setBlogs ] = useState([...]);

相关问题