Зберагачыць стан React useReducer у sessionStorage
Зберагаць стан React useReducer у sessionStorage пасля перэзавантажэння, выкарыстоўваючы механізмы серыялізаціі, каб інтэрфейс застаўся цілым пасля апдэта і не выкраліся секрэты ў сістэму зберагання.
Крыніцы: How to Persist React useReducer State with sessionStorage
Рашэння
Запісуйце адночасна шлях успеху і шлях вярнення. Павтарэнныя спробы і обработка некорэктных паведамленняў ёсць часткай продукту. Аддзельнай стаўцы політыкі выкарыстоўвання дакументаў ад політыкі ўтварэння рэсультаатаў. Заражаныя дакументы могу вплываць на адпаведзі без змены параметраў модэлю.
import { useCallback, useReducer, type Dispatch } from 'react'
import { useSessionStorage } from 'react-use'
type ReducerFn<State, Action> = (state: State, action: Action) => State
export default function useSessionStorageReducer<State, Action>(
key: string,
reducer: ReducerFn<State, Action>,
initialState: State
): [State, Dispatch<Action>] {
const [sessionStorageValue, setSessionStorageValue] = useSessionStorage(
`reducer:${key.replaceAll(/\s+/g, '_')}`,
initialState
)
const reducerLocalStorage = useCallback(
(state: State, action: Action) => {
const newState = reducer(state, action)
setSessionStorageValue(newState)
return newState
},
[reducer, setSessionStorageValue]
)
return useReducer(reducerLocalStorage, sessionStorageValue)
}
Як гэта працюе
Аддзельнай стаўцы політыкі выкарыстоўвання дакументаў ад політыкі ўтварэння рэсультаатаў. Заражаныя дакументы могу вплываць на адпаведзі без змены параметраў модэлю.
Короткі прыклад выкарыстоўвання
Аддзельнай стаўцы політыкі выкарыстоўвання дакументаў ад політыкі ўтварэння рэсультаатаў. Заражаныя дакументы могу вплываць на адпаведзі без змены параметраў модэлю.
type State = { count: number }
type Action = { type: 'INCREMENT' } | { type: 'DECREMENT' }
function counterReducer(state: State, action: Action): State {
switch (action.type) {
case 'INCREMENT':
return { count: state.count + 1 }
case 'DECREMENT':
return { count: state.count - 1 }
default:
return state
}
}
export function Counter() {
const [state, dispatch] = useSessionStorageReducer('counter_key', counterReducer, { count: 0 })
return (
<div>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'INCREMENT' })}>+</button>
<button onClick={() => dispatch({ type: 'DECREMENT' })}>-</button>
</div>
)
}
Заўяжыце код
Запісуйце час выканання і вартасць пад функцыональнымі рэсультатамі. Ранняя візыбілнасць запобегае неспакою з боку расчыткаў у спільных срэдах. Аддзельнай стаўцы політыкі выкарыстоўвання дакументаў ад політыкі ўтварэння рэсультаатаў. Заражаныя дакументы могу вплываць на адпаведзі без змены параметраў модэлю.
Чакліст аператыўных задач
Запісвайце час выканання і вартасць праз функцыянальныя рэзултаты. Ранняя відкрытасць запобегае неспакоўным счыткам у спадзеленых сераўсах.
Праверыце і адчыстыце прыйняты кантэнт. Спрыяйце недазвержлівым даным як атакаванню.
Пастойнасць ператварае дэманстрацыі ў сістэмы: ніткі, участка людзей у працэсе і аптывальная дыбаггінгавая работа залежная ад яе.
Размешчайце тыпы праз компаненты і трывожце меркавіні ў межах. Шырокія меркавіні становяцца боргам, якога TypeScript меў бы запобегчы.
Напісце кароткі практычны вядок: роўнажыце клучы, апустыце чэргі, вярніце пасляльшую змяну.
Для змяцнення, пры нумерэ 0, праказайце вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры змяне коду. Аперацыйныя працавнікі павінны магчымае перазваляць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.
Запісвайце час выканання і вартасць праз функцыянальныя рэзултаты. Ранняя відкрытасць запобегае неспакоўным счыткам у спадзеленых сераўсах.
Адзінакова політыка выявлення і адзінаковая політыка стварэння. Заражаныя дакументы можуць кераваць адказамі без змены ваг модэлі.
Для паўнейшага забезпечэння надзеі, 1, паказваецца неабходнасць задаць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.
Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі і обработка неуспешных падзеяў ёсць часткай продукту.
Праверыце і очыстыце прыйняты контэнт. Спрыяйце неавтарызаваным корпусам дакументаў як атакавальным поверхням.