Тип значения сохраняется до localStorage
, должна быть строкой .
Рассмотрите возможность пересмотра кода, взаимодействующего с localStorage
, чтобы значение состояния currentId
сначала преобразовывалось в строку перед передачей в localStorage.setItem()
.
Также обратите внимание, что строковые значения возвращаются при localStorage.getItem()
, когда присутствует ключ, что означает, что вы должны проанализировать возвращенное значение, чтобы получить currentId
как число.
Что-то вроде этого должно работать:
const saveCurrentId = () => {
const { currentId } = this.state;
/* Format string from value of currentId and persist */
localStorage.setItem( 'currentId', `${ currentId }`);
}
const loadCurrentId = (fallbackValue) => {
/* Load currentId value from localStorage and parse to integer */
const currentId = Number.parseInt(localStorage.getItem('currentId'));
/* Return currentId if valid, otherwise return fallback value */
return Number.isNaN(currentId) ? fallbackValue : currentId;
}
С помощью приведенного выше кода вы можете обновить конструктор компонентов, чтобы автоматически загружать и применять постоянный currentId
следующим образом:
constructor(props) {
super(props)
this.state = {
/* Use 0 as fallback if no persisted value present */
currentId: this.loadCurrentId( 0 ),
pause: true,
count: 0,
storiesDone: 0
}
this.defaultInterval = 4000
this.width = props.width || 360
this.height = props.height || 640
}