Quiero almacenar un número entero en localStorage y poder usarlo en varios archivos JavaScript. Sin embargo, los otros archivos hacen referencia a un valor antiguo incluso después de haberlo configurado en uno nuevo.
Aquí hay una versión condensada del archivo JSON con el que estoy trabajando:
export const data = [ { "username": "steve" }, { "username": "fred" }
Aquí está el código donde configuro el valor de la clave localStorage:
import { renderMenu } from "./menuPage.js"; import { data } from "../data/data.js"; // JSON file containing data const usernameInput = document.createElement("input"); const btn = document.createElement("btn"); btn.addEventListener("click", (ev) => { var username = usernameInput.value; const user = data.find(u => (u.username === username)); if (!user) { errText.textContent = "Incorrect username"; } else { var dataIndex = data.indexOf(user); console.log(dataIndex); if (localStorage.getItem("dataIndexLocalStorage") !== dataIndex) { localStorage.setItem("dataIndexLocalStorage", JSON.stringify(dataIndex)); } renderMenu(); } }
Por ejemplo, si el nombre de usuario que ingresé fue "steve", espero console.log(dataIndex);
a la salida 0
.
Aquí está el código donde obtengo el valor de la clave localStorage (este código se usa en varios archivos JavaScript):
import { data } from "../data/data.js"; const dataIndex = parseInt(localStorage.getItem("dataIndexLocalStorage")); export function renderMenu() { console.log(dataIndex); }
Siguiendo el ejemplo mencionado anteriormente, sigo esperando console.log(dataIndex);
a la salida 0
. Hace esto en algunos casos (a veces simplemente genera null
).
En los casos en los que sí da como resultado 0
, si tuviera que ingresar "fred" como nombre de usuario, espero console.log(dataIndex);
a la salida 1
. Sin embargo, en la función renderMenu(), console.log(dataIndex);
todavía genera 0
, no 1
como lo hace en el código principal.
¿Me estoy perdiendo algo realmente básico? Parece extraño que no actualice el valor en todas partes.
Agradezco cualquier ayuda que pueda obtener :)