• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

173
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 3 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 3 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 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error