#javascript #reactjs #local-storage #page-refresh
Вопрос:
Я объясняю свою проблему: я играю в вопросы раундами с react и JS, когда вы правильно выполняете раунд, страница обновляется, и в зависимости от количества раундов, которые у вас есть, вы переходите к другому вопросу большей сложности.
Проблема возникает здесь: в Доме.Файл JS, который я объявил локальным хранилищем, так что он всегда равен 0 (когда вы терпите неудачу, вопрос приводит вас домой, и раунды сбрасываются на 0):
localStorage.setItem("numRounds", 0)
В вопросе.Файл JS, когда я нажимаю на вопрос, введите метод validateQuestion, здесь я получаю домашнее локальное хранилище, равное 0, затем я создаю переменную, в которой сохраняю данные локального хранилища, и добавляю счетчик для каждого правильного вопроса 1 (Повышает уровень сложности вопроса), а затем сохраняю его в локальном хранилище, добавляя переменную, которую я создал (Используя console.log, мы можем проверить, что все идет идеально):
validateQuestion(e){
var answerUser = e.currentTarget.innerHTML;
var answercorrect = this.state.question.Answer_Correct //(This is api does not matter to the
problem)
if (answercorrect == answerUser){
alert("CORRECT")
var numRounds = localStorage.getItem("numRounds");
console.log(numRounds);
numRounds
localStorage.setItem("numRounds", numRounds);
console.log(localStorage.getItem("numRounds"));
window.location.assign("http://localhost:3000/question");
}
else{
alert("FAIL")
window.location.assign("http://localhost:3000/");
}
}
Но когда я обновляю страницу, локальное хранилище возвращается к номеру 0, и оно не будет сохранено правильно, так что я повышаю сложность вопросов (то есть с помощью другого метода) .. Есть какое-нибудь решение этой проблемы?
Приветствую и благодарю!
Комментарии:
1. это может быть что-то вроде строки/числа. Попробуйте это изменить:
var numRounds = Number(localStorage.getItem("numRounds"));
2.вы написали эту строчку в
componentdidmount
илиuseEffect
localStorage.setItem("numRounds", 0)
, если бы вы написали. Он будет сброшен при повторной загрузке страницы3. Я сделал «componentWillMount ()» (я не знаю, будет ли это то же самое или нет), но строка отсутствует, это больше, чем ничего, у меня есть для вызова API и выбора вопроса
Ответ №1:
В локальном хранилище могут храниться только строки для каждого ключа. Его нужно преобразовать обратно в число, когда вы его прочитаете, чтобы его можно было правильно добавить.
var numRounds = Number(localStorage.getItem("numRounds"));
numRounds ;
Комментарии:
1. Я сделал это как есть и ничего, локальное хранилище будет сохранено, но когда я обновлю страницу (с окном. местоположение.назначьте («http: //localhost:300/вопрос»)), чтобы получить другой вопрос, он снова останется на 0.