【问题标题】:How can I stop the React buttons from rendering synchronously?如何阻止 React 按钮同步渲染?
【发布时间】:2021-11-29 08:21:43
【问题描述】:

每次我点击某个玩家的“增加”或“减少”按钮时,我只想增加那个玩家的分数。但是,现在当我单击其中一个按钮时,它会增加两个分数。我知道这可能是我完全忽略的简单事情,但感谢您提供任何帮助。先感谢您! 这是我的代码https://codesandbox.io/s/objective-curran-6ogn3?file=/src/App.js:0-2090

import "./styles.css";
import {Component, useState} from 'react';

export default function App() {
  const [count, setCount] = useState(0);

  const [playerScore, setplayerScore] = useState([{
    nameOne: 'Player 1'
  }, {
    nameTwo: 'Player 2'
  }
]);

  const increase = () => {
    setCount(count + 1);
    setplayerScore(playerScore);
  };

  const decrease = () => {
    setCount(count - 1);
    setplayerScore(playerScore);
  };

  return (
    <main>
    {/* player 1*/}
      <div>
          {playerScore.map((player) => {
            return (
              <div>
                <h2 className="name">{player.nameOne}</h2>
              </div>
            );
          })}
      </div>
      <div>
        <div className="score">{count}</div>
        {/* increase button */}
          <button onClick={increase}>
            Increase
          </button>

        {/* decrease button */}
          <button onClick={decrease}>
            Decrease
          </button>
      </div>

    {/* player 2 */}
    <div>
          {playerScore.map((player) => {
            return (
              <div>
                <h2 className="name">{player.nameTwo}</h2>
              </div>
            );
          })}
      </div>
      <div>
        <div className="score">{count}</div>
        <section>
          <button onClick={increase}>Increase</button>
          <button onClick={decrease}>Decrease</button>
        </section>
      </div>
    </main>
  );
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

【问题讨论】:

    标签: javascript reactjs button


    【解决方案1】:

    我根据你的代码做了这个分叉。 https://codesandbox.io/s/cranky-hooks-q9ntu?file=/src/App.js

    我已经重构了一些逻辑并添加了我理解你想要的功能。特别是增加/减少逻辑。

    主要错误是您对整个数组使用相同的状态,因此所有项目的值将始终相同。

    【讨论】:

    • 非常感谢丹尼尔!这正是我想要的功能。我想我需要多研究一下 React 状态 :)
    猜你喜欢
    • 1970-01-01
    • 2022-07-27
    • 2020-07-01
    • 2020-07-06
    • 1970-01-01
    • 2015-08-13
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多