【发布时间】:2022-01-15 11:23:21
【问题描述】:
每次我尝试刷新页面时,它都会返回 0。 当比赛等于 6 时,我从回合中获得 bestScore, 所以基本上每次匹配的卡片达到 6 时,它都会从回合中获取 bestScore 并将 bestScore 保存到 localStoarge 并且它可以工作,但是当我尝试刷新它时,它就消失了
function App() {
const [cards, setCards] = useState([]);
const [turns, setTurns] = useState(0);
const [match, matchedCards] = useState(0);
const [bestScore, setBestScore] = useState(
localStorage.getItem("highestScoresss")
);
const [choiceOne, setChoiceOne] = useState(null); //Kullanici 1.karta basinca setChoiceOne o karti alacak ve guncelliyecek
const [choiceTwo, setChoiceTwo] = useState(null); //Kullanici 2.karta basinca setChoiceTwo o karti alacak ve guncelliyecek
const [disabled, setDisabled] = useState(false);
useEffect(() => {
if (match === 6) {
const highScore = Math.min(turns, bestScore);
setBestScore(highScore);
setBestScore(turns);
} else {
console.log("false");
}
}, [turns]);
useEffect(() => {
localStorage.setItem("highestScoresss", JSON.stringify(bestScore));
});
这就是 JSX
<div className="bilgi">
<p>Sıra: {turns}</p>
<p>Bulunan: {match}</p>
<p>En iyi Skor: {bestScore}</p>
<button onClick={shuffleCards}>Yeni Oyun</button>
</div>
</div>
【问题讨论】:
-
能否请您在此问题的描述中提及代码 sn-p?或Display the image in the Description.
-
因为您的第一个效果在每次更新(包括初始化)时都会运行,它将 localStorage 设置为 0,因为这是您在 useState 中设置的内容
-
那么我该如何解决它
-
是否有理由让
setBestScore(highScore);状态更新入队,然后在第一个useEffect挂钩回调中立即用入队的setBestScore(turns);更新覆盖它?
标签: reactjs react-hooks local-storage jsx use-effect