增量更新状态数组而不是完全更新

Updating a state array incrementally as opposed to entirely

我是 React 的新手,我刚刚开始使用钩子,尤其是 useEffect:

```const Upload= ({  uploadedCard, cards}) => 
 {useEffect(() => {
cards.push(uploadedCard);
 }, [uploadedCard]); };```

基本上每次 axios api 返回 uploadedCard 时,我都希望卡片状态将这张新卡片添加到其中。请注意,卡片是一个数组,因此我希望这个数组添加新卡片,而不是一次加载所有卡片(我目前的方法是这样做的):

useEffect(() => {
   getAllCards();
  }, [uploadedCard]);

请注意在第二段代码中,当我使用 React-redux reducers 调用 getAllCards() 到我的后端时,它会自动 returns 'cards' 数组作为有效负载,所以我的第二种方法工作完美,但它也会导致 'cards' 从头开始​​渲染。非常感谢任何有关如何规避此问题的帮助!

谢谢 :)

您首先需要将卡片存储在本地状态。然后,每当 Upload 组件收到不同的 uploadedCard 时,useEffect 将 运行 添加到卡片数组中

const Upload= ({ uploadedCard, cards }) => {
  const [ allCards, setAllCards ] = useState(cards);
   useEffect(() => {
   setAllCards([ ...cards, uploadedCard]);
  }, [ uploadedCard ]); 
};