Saya sedang mengerjakan halaman ini di mana saya perlu memfilter beberapa posting berdasarkan type
. Untuk beberapa alasan useState hook tidak memperbarui data. Komentar pada kode menjelaskan dengan lebih baik di mana letak kesalahannya. Bagaimana cara memperbaiki kait useState?
Untuk memperjelas, filteredPosts
harus mendapatkan nilai baru dari newFilteredPosts
.
Halaman.tsx
import React, { useEffect, useState } from "react";
import { PostType } from "types";
import { useStyles } from "styles";
import { useAppState, useAppDispatch } from "context/store";
import { getAllPosts, setActivePost } from "context/posts/postOperations";
import { selectBoard, getAllBoards } from "context/boards/boardOperations";
const Page = () => {
const dispatch = useAppDispatch();
const classes = useStyles();
const { posts, activePost, selectedBoardId, boards } = useAppState();
const [filteredPosts, setFilteredPosts] = useState(Array<PostType>());
useEffect(() => {
getAllBoards(dispatch);
}, [dispatch]);
const updateposts = () => {
getAllPosts(dispatch, selectedBoardId);
var newFilteredPosts = Array<PostType>();
posts.forEach((p) => p.type === "mobile" && newFilteredPosts.push(p));
setFilteredPosts(newFilteredPosts); // this doesn't seem to work
console.log(newFilteredPosts); // this prints data
console.log(filteredPosts); // this shows an empty array
}
...