Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

222
Views
El html no se muestra en función de las variables guardadas localmente

Tengo un componente que necesita mostrar html en función de una variable booleana. Hago esta variable igual a la que configuré en localStorage. Entonces, si hago clic en foo, lo configuro como falso tanto como variable como en localStorage. Si hago clic en la barra, la configuro en verdadero. Ahora, antes de cargar el componente, voy a obtener esta variable y la hago igual que la que tengo localmente, por lo que si hago clic en foo, cuando recargo el componente, la variable es falsa y, por lo tanto, el html debería mostrarme foo. pero no entiendo porque me enseña barras!!! Es un poco complicado de explicar, espero que lo entiendas por el código:

 <template> <div id="app"> <h2 v-if="!isTrue">FOO</h2> <h2 v-else>BAR</h2> <button @click="foo()">FOO</button> <button @click="bar()">BAR</button> </div> </template> <script> export default { name: 'App', data: function () { return { isTrue: null, }; }, created() { const boh = localStorage.getItem('boh'); this.isTrue = boh; console.log('boh', boh); console.log('isTrue', this.isTrue); }, methods: { foo() { this.isTrue = false; localStorage.setItem('boh', false); }, bar() { this.isTrue = true; localStorage.setItem('boh', true); }, }, }; </script>

Adjunto un ejemplo en stackblitz, así que quizás puedas hacer pruebas: https://stackblitz.com/edit/vue-b3ieft?file=src%2FApp.vue

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Porque una variable que guardó en localStorage es una cadena. Cuando tu lo hagas:

 const boh = localStorage.getItem('boh'); this.isTrue = boh;

En realidad obtienes:

 this.isTrue = 'true';

Y esta cadena siempre es true .

Para evitar esto, puede verificar si es una cadena true :

 const boh = localStorage.getItem('boh'); this.isTrue = boh === 'true';

https://stackblitz.com/edit/vue-mnuhbr?file=src%2FApp.vue

about 4 years ago · Juan Pablo Isaza Report

0

Agregando a la respuesta de @Georgy. Para evitar una verificación innecesaria, es una buena práctica que los valores booleanos se encadenen al configurar el almacenamiento local y se analicen al obtener el elemento.

Ajuste

 localStorage.setItem("boh", JSON.stringify(false));

Consiguiendo

 const boh = JSON.parse(localStorage.getItem('boh'))
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!