繁体   English   中英

使用 Redux 在 React 中渲染以前的 State

[英]Render Previous State in React with Redux

我正在尝试使用 Redux 在 React 中构建一个 10 针计算器,并且我试图将我最近点击的数字显示到表格中:

用纯文本解释有点困难,所以我想我会举一些例子:

初始状态 这是我最初的 state 始终为 0,每当我单击上面从 1 到 10 的任何数字时,它都会更新: 更新状态 但我想要的是,每次我点击一个数字时,我点击的数字将呈现在每个 Player 行上,例如像这样(现在下面的这个例子是硬编码的):

硬编码示例

我考虑过使用数组,每次单击一个数字时,该数字都会被推送到数组中,但它不起作用,我尝试调试它,但没有发现它为什么不起作用:

export const AddScore = () => {
  const count = useAppSelector((state) => state.scores.value);
  const dispatch = useAppDispatch();
  const [playerScoreArray, updatePlayerScoreArray] = useState<number[]>([
    1, 5, 10,
  ]);

  const onClick = (i: number) => {
    dispatch(increaseScoreByAmount(i + 1));
    console.log(i + 1);
    updatePlayerScoreArray( i => [...i]);
  };

  return (
    <>
      <div className="py-5">
        {[...Array(10)].map((e: number, i: number) => {
          return (
            <Button onClick={() => onClick(i)} variant="outlined" key={i + 1}>
              {i + 1}
            </Button>
          );
        })}
      </div>
      <Scoreboard playerScore={playerScoreArray} maxScore={count} />
    </>
  );
};

playerScoreArray在另一个组件Scoreboard板上呈现,我试图通过array map 为每个玩家显示它们,但我认为这不起作用。

<tbody className="bg-white divide-y divide-gray-200">
                {/* Info Here */}
                <tr>
                  {playerScore.map((scores) => (
                    <td
                      className="px-6 py-4 whitespace-nowrap"
                      key={Math.random()}
                    >
                      {scores}
                    </td>
                  ))}
                  <td className="px-6 py-4 whitespace-nowrap">{maxScore}</td>
                </tr>
              </tbody>

我尝试使用普通array ,然后使用带有useStatearray ,但没有任何效果。

有没有办法用 Redux 做到这一点?

提前感谢您的帮助

我终于找到了一个解决方案,这里是:

  const onClick = (i: number) => {
    dispatch(increaseScoreByAmount(i + 1));
    if (playerScoreArray.length < 10) {
      // This below is the solution
      updatePlayerScoreArray((playerScoreArray) => [
        ...playerScoreArray,
        i + 1,
      ]);
    }

  };

这让我可以从每一次 Redux 点击推送到我的 useState 数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM