1

我有一个用 React 制作的应用程序。我有一系列游戏,我需要以某种方式展示它们。在我看来,我处理这些游戏的方式相当繁重,所以我决定避免在每个渲染周期都计算它。

我是 React 新手,所以我不确定“React 方式”是什么。我最近发现了一个useMemo()钩子,它似乎可以满足我的需要。这是我的简化代码:

import React, { useState, useMemo } from 'react';

const GamesPage = () => {
    const [games, setGames] = useState([]);
    const [gameTitle, setGameTitle] = useState('');
    const gamesGrouped = useMemo(() => games.reduce(
        (games, game) => {
            // heavy computation
        },
        []
    ), [games]);

    return (
        <div>
            <input
                type="text"
                value={gameTitle}
                onChange={event => setGameTitle(event.target.value)}
            />
            <button onClick={() => setGames(
                [...games, {title: gameTitle}]
            )}>Add game</button>
            <ul>
                {gamesGrouped.map(game => (
                    <li key={game.title}>{game.title}</li>
                ))}
            </ul>
        </div>
    );
};

export default GamesPage;

我做对了吗?我的想法背后是否有一些潜在的陷阱,比如在需要时不计算或在不需要时计算?还是有一些更直接的方法,而不使用useMemo()

额外问题:如何在类组件中实现这一目标?

4

0 回答 0