javascript - 如何在功能性反应组件中洗牌一次数组?
问题描述
我正在创建一个记忆游戏,我有一个洗牌函数,可以洗牌一个数字数组,这些数字被呈现为卡片,问题是每次状态改变时卡片都会被洗牌,我只需要用洗牌数组初始化我的组件即使状态改变,它仍然存在!
我试过useEffect
了,但它不起作用,或者我无法正确实现它
代码:
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} />
)
我怎样才能改变我的数组一次而不是每次改变状态!
解决方案
你可以使用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} />
)
推荐阅读
- angular - 从 ngx-line-chart 中删除时间
- python - 将 CSV 文件从 Google 驱动器导入 pandas 数据框
- azure-data-factory - 如何使用 Azure 数据工厂的复制数据活动将时间戳添加到创建的列?
- docker - 无法在 http://localhost:34811/ 上启动驱动程序服务
- javascript - 更改孩子的href目的地
- javascript - materialUI 表中的行数错误
- php - 如何将图像嵌入 Outlook 可接受的电子邮件中
- r - 对多个值进行分组和划分
- typescript - 为什么赛普拉斯运行旧冷而不是更新?
- kubernetes - 具有 0 个节点且已启用自动驾驶仪的 GKE 集群