Open
Description
// 你的答案
<script setup lang='ts'>
import { ref,computed } from "vue"
/**
* Implement the composable function
* Make sure the function works correctly
*/
function useLocalStorage(key: string, initialValue: any) {
const value = ref(initialValue);
localStorage.setItem(key,initialValue);
const counter = computed({
get:()=> {
value.value = localStorage.getItem(key);
return value.value;
},
set:(val)=> {
localStorage.setItem(key,val);
value.value = val
}
})
return counter
}
const counter = useLocalStorage("counter", 0)
// We can get localStorage by triggering the getter:
console.log(counter.value)
// And we can also set localStorage by triggering the setter:
const update = () => counter.value++
</script>
<template>
<p>Counter: {{ counter }}</p>
<button @click="update">
Update
</button>
</template>