0
Redux를 사용하여 localStorage에 저장하는 방법은 특정 상태 일뿐입니다?RedStay를 사용하는 localStorage에서 특정 상태의 조각 만 저장
예를 들어, 만회로 정의 목록에서 내 상태는 다음과 같습니다
const rootReducer = combineReducers({
list: listReducer,
form: formReducer
})
localStorage.js :
export const loadState =() => {
try {
const serializedState = localStorage.getItem('state')
if (serializedState === null) {
return undefined;
}
return JSON.parse(serializedState)
} catch (err) {
return undefined
}
}
export const saveState = (state) => {
try {
const serializedState = JSON.stringify(state)
localStorage.setItem('state', serializedState)
} catch (err) {
// to define
}
}
state = {
companies: [],
currentDisplay: '',
recordNotFound: false,
}
이 내 combineReducer 파일입니다 그리고 브라우저를 다시로드 한 후 나는 단지만 원한다. 10 어레이가 미리로드되고 나머지는 상태로 리셋된다. currentDisplay: ''
은 ''와 동일해야합니다.
오른쪽 지금이 작업 코드에 대한 책임은 다음과 같습니다
store.subscribe(() => {
saveState({
list: store.getState().list
})
})
을 그리고 내가 setState를()를 사용하여 반작용에 내가 쉽게 이러한 매개 변수를 재설정 할 수있는 것 같아요 ... 분명 전체 목록을 저장하지만 것 이것을 제대로하고 싶습니다.
불행히도 그렇게 쉽지 않습니다. 나는 이것을 전에 시도하고 있었다. 이 경우 브라우저를 다시로드 한 후 내 초기 상태는 다음과 같습니다 '목록 : [{...}, {...}]' 나는이 같은 구조를 가지고 싶다 : '목록 : { 회사 : [{...}, {...}], nextParam : '', nextParamm : ''} –
다른 매개 변수를 사용할 필요가 없다면 그 이유를 알지 못했습니다. 하지만'return JSON.parse (serializedState) .companies'를 사용하여 원하는 경우 'loadState'에서'회사 '배열 만 반환 할 수 있습니다. –
예, 정확히 찾고자했던 것입니다. 정말 고마워! :) 다른 매개 변수는 모범적입니다. 플래그 및 필터로서 수행합니다. –