Bereaksi skrip ketikan: useState tidak diperbarui

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
  }
  ...

person prkmk    schedule 11.03.2021    source sumber
comment
mungkin pertanyaan ini menyelesaikan masalah Anda stackoverflow.com/questions/66350320/   -  person danhuong    schedule 11.03.2021