Quick LocalStorage Usage in Vue
localStorage
can be an incredibly useful tool in creating experiences for applications, extensions, documentation, and a variety of use cases. I’ve personally used it in each! In cases where you’re storing something small for the user that doesn’t need to be kept permanently, localStorage
is our friend. Let’s pair localStorage
with Vue, which I personally find to be a great, and easy-to-read developer experience.
Simplified example
I recently taught a Frontend Masters course where we built an application from start to finish with Nuxt. I was looking for a way that we might be able to break down the way we were building it into smaller sections and check them off as we go, as we had a lot to cover. localStorage
was a gsolition, as everyone was really tracking their own progress personally, and I didn’t necessarily need to store all of that information in something like AWS or Azure.
Here’s the final thing we’re building, which is a simple todo list:
Storing the data
We start by establishing the data we need for all the elements we might want to check, as well as an empty array for anything that will be checked by the user.
export default {
data() {
return {
checked: [],
todos: [
"Set up nuxt.config.js",
"Create Pages",
// ...
]
}
}
}
We’ll also output it to the page in the template tag:
<div id="app">
<fieldset>
<legend>
What we're building
</legend>
<div v-for="todo in todos" :key="todo">
<input
type="checkbox"
name="todo"
:id="todo"
:value="todo"
v-model="checked"
/>
<label :for="todo">{{ todo }}</label>
</div>
</fieldset>
</div>
Mounting and watching
Currently, we’re responding to the changes in the UI, but we’re not yet storing them anywhere. In order to store them, we need to tell localStorage
, “hey, we’re interested in working with you.” Then we also need to hook into Vue’s reactivity to update those changes. Once the component is mounted, we’ll use the mounted
hook to select checked items in the todo list then parse them into JSON so we can store the data in localStorage
:
mounted() {
this.checked = JSON.parse(localStorage.getItem("checked"))
}
Now, we’ll watch that checked
property for changes, and if anything adjusts, we’ll update localStorage
as well!
watch: {
checked(newValue, oldValue) {
localStorage.setItem("checked", JSON.stringify(newValue));
}
}
That’s it!
That’s actually all we need for this example. This just shows one small possible use case, but you can imagine how we could use localStorage
for so many performant and personal experiences on the web!
The post Quick LocalStorage Usage in Vue appeared first on CSS-Tricks.
You can support CSS-Tricks by being an MVP Supporter.