Сброс localstorage при обновлении страницы
Пишу приложение на реакт, необходимо, что бы при обновлении страницы, сохранялись состояния элементов. Использую localstorage, браузер добавляемые в хранилище элементы видит корректно, но при обновлении - сбрасывает состояния объектов localstorage на исходные.
Вероятно, проблема в том, что у меня изначально указаны дефолтные значения. Как сделать что б значения сначала считывались из хранилища, а если их там нет, то указывались дефолтные ?
const [resultId, setIdResult] = React.useState(true);
window.localStorage.setItem('resultId', JSON.stringify(resultId));
let data = JSON.parse(localStorage.getItem('resultId'));
const toggleIdRes = () => {
setIdRes(!data)
}
Ответы (1 шт):
Автор решения: Sergei Kirjanov
→ Ссылка
const useLocalStorageList = (key,defaultValue) => {
const [ state, setState ] = useState(()=>JSON.parse(localStorage.getItem(key)||defaultValue))
useEffect(()=>{
localStorage.setItem(key, JSON.stringify(state))
},[state])
return [ state, setState ]
}
const [resultId, setIdResult] = useLocalStorageList('resultId','true')
const toggle = () => setIdResult(was=>!was) // надежней, чем просто (!resultId)