第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在功能性反應(yīng)組件中洗牌一次數(shù)組?

如何在功能性反應(yīng)組件中洗牌一次數(shù)組?

UYOU 2022-07-01 16:11:09
我正在創(chuàng)建一個(gè)記憶游戲,我有一個(gè)洗牌函數(shù),可以洗牌一個(gè)數(shù)字?jǐn)?shù)組,這些數(shù)字被呈現(xiàn)為卡片,問題是每次狀態(tài)改變時(shí)卡片都會(huì)被洗牌,我只需要用洗牌數(shù)組初始化我的組件即使?fàn)顟B(tài)改變,它仍然存在!我試過useEffect了,但它不起作用,或者我無法正確實(shí)現(xiàn)它代碼:const numbers = [1, 2, 3, 1, 2, 3];const shuffle = (arr) => {//shuffle logic here}let shuffledCards;useEffect(() => {   shuffledCards = shuffle(numbers) // it doesn't help}, [])return(  <cards shuffledCards={shuffledCards} />)我怎樣才能改變我的數(shù)組一次而不是每次改變狀態(tài)!
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

你可以使用useMemo鉤子。


const shuffle = (arr) => {

  //shuffle logic here

}


const shuffledCards = React.useMemo(() => {

  const numbers = [1, 2, 3, 1, 2, 3];  

  return shuffle(numbers);

}, [])


return (

  <cards shuffledCards={shuffledCards} />

)


查看完整回答
反對(duì) 回復(fù) 2022-07-01
?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

您的函數(shù)正在重新定義shuffleCards每次渲染的數(shù)組。如果將陣列置于狀態(tài),它將是穩(wěn)定的。


numbers將組件和外部組件定義shuffle為初始狀態(tài)和效用函數(shù)


const numbers = [1, 2, 3, 1, 2, 3];


const shuffle = array => {

  // shuffle logic

};

組件邏輯:初始化狀態(tài)并使用效果在組件掛載時(shí)對(duì)數(shù)組進(jìn)行洗牌


const CardShuffler = () => {

  const [shuffledCards] = useState(shuffle(numbers)); // initialize state


  return <Cards shuffledCards={shuffledCards} />;

};


查看完整回答
反對(duì) 回復(fù) 2022-07-01
  • 2 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)