Вы не можете. Но всякий раз, когда вы обновляете состояние компонента, он будет [в конечном итоге] повторно отрисован.
Если ваша цель - сохранить состояние компонента в хранилище, вы можете go с чем-то вроде этого:
class SomeComp extends React.Component {
componentDidMount() {
this.setState(localstorage.getItem('somekey'))
}
componentDidUpdate(_prevProps, _prevState, _snapshot) {
localstorage.setItem('somekey', JSON.stringify(this.state))
}
}
Если лично использовать этот крючок для той же цели:
import ls from 'local-storage'
import { useState } from 'react'
// useState, but value is retrieved from local storage first time,
// and stored in local storage when updated
const useLSBackedState = (defaultValue, localStorageKey) => {
const lsValue = ls.get(localStorageKey)
const [value, doSetValue] = useState(
lsValue === undefined ? defaultValue : lsValue
)
const setValue = value => {
if (typeof value === 'function') {
doSetValue(v => {
const newValue = value(v)
ls.set(localStorageKey, newValue)
return newValue
})
} else {
doSetValue(value)
ls.set(localStorageKey, value)
}
}
return [value, setValue]
}
// SomeComponent.js
const SomeComponent = _props => {
const [sidebarOpen, setSidebarOpen] = useLSBackedState(false, 'sidebarOpen')
// ...
}