@@ -336,38 +336,38 @@ const initialUseHistoryStateState = {
336336
337337const useHistoryStateReducer = ( state , action ) => {
338338 const { past, present, future } = state ;
339- switch ( action . type ) {
340- case "UNDO" :
341- return {
342- past : past . slice ( 0 , past . length - 1 ) ,
343- present : past [ past . length - 1 ] ,
344- future : [ present , ...future ] ,
345- } ;
346- case "REDO" :
347- return {
348- past : [ ...past , present ] ,
349- present : future [ 0 ] ,
350- future : future . slice ( 1 ) ,
351- } ;
352- case "SET" :
353- const { newPresent } = action ;
354339
355- if ( action . newPresent === present ) {
356- return state ;
357- }
340+ if ( action . type === "UNDO" ) {
341+ return {
342+ past : past . slice ( 0 , past . length - 1 ) ,
343+ present : past [ past . length - 1 ] ,
344+ future : [ present , ...future ] ,
345+ } ;
346+ } else if ( action . type === "REDO" ) {
347+ return {
348+ past : [ ...past , present ] ,
349+ present : future [ 0 ] ,
350+ future : future . slice ( 1 ) ,
351+ } ;
352+ } else if ( action . type === "SET" ) {
353+ const { newPresent } = action ;
358354
359- return {
360- past : [ ...past , present ] ,
361- present : newPresent ,
362- future : [ ] ,
363- } ;
364- case "CLEAR" :
365- return {
366- ...initialUseHistoryStateState ,
367- present : action . initialPresent ,
368- } ;
369- default :
370- throw new Error ( "Unsupported action type" ) ;
355+ if ( action . newPresent === present ) {
356+ return state ;
357+ }
358+
359+ return {
360+ past : [ ...past , present ] ,
361+ present : newPresent ,
362+ future : [ ] ,
363+ } ;
364+ } else if ( action . type === "CLEAR" ) {
365+ return {
366+ ...initialState ,
367+ present : action . initialPresent ,
368+ } ;
369+ } else {
370+ throw new Error ( "Unsupported action type" ) ;
371371 }
372372} ;
373373
@@ -539,40 +539,29 @@ export function useIsFirstRender() {
539539export function useList ( defaultList = [ ] ) {
540540 const [ list , setList ] = React . useState ( defaultList ) ;
541541
542- const methods = React . useMemo ( ( ) => {
543- const set = ( l ) => {
544- setList ( l ) ;
545- } ;
546-
547- const push = ( element ) => {
548- setList ( ( l ) => [ ...l , element ] ) ;
549- } ;
550-
551- const removeAt = ( index ) => {
552- setList ( ( l ) => [ ...l . slice ( 0 , index ) , ...l . slice ( index + 1 ) ] ) ;
553- } ;
542+ const set = React . useCallback ( ( l ) => {
543+ setList ( l ) ;
544+ } , [ ] ) ;
554545
555- const insertAt = ( index , element ) => {
556- setList ( ( l ) => [ ...l . slice ( 0 , index ) , element , ... l . slice ( index ) ] ) ;
557- } ;
546+ const push = React . useCallback ( ( element ) => {
547+ setList ( ( l ) => [ ...l , element ] ) ;
548+ } , [ ] ) ;
558549
559- const updateAt = ( index , element ) => {
560- setList ( ( l ) => l . map ( ( e , i ) => ( i === index ? element : e ) ) ) ;
561- } ;
550+ const removeAt = React . useCallback ( ( index ) => {
551+ setList ( ( l ) => [ ... l . slice ( 0 , index ) , ... l . slice ( index + 1 ) ] ) ;
552+ } , [ ] ) ;
562553
563- const clear = ( ) => setList ( [ ] ) ;
554+ const insertAt = React . useCallback ( ( index , element ) => {
555+ setList ( ( l ) => [ ...l . slice ( 0 , index ) , element , ...l . slice ( index ) ] ) ;
556+ } , [ ] ) ;
564557
565- return {
566- set,
567- push,
568- removeAt,
569- insertAt,
570- updateAt,
571- clear,
572- } ;
558+ const updateAt = React . useCallback ( ( index , element ) => {
559+ setList ( ( l ) => l . map ( ( e , i ) => ( i === index ? element : e ) ) ) ;
573560 } , [ ] ) ;
574561
575- return [ list , methods ] ;
562+ const clear = React . useCallback ( ( ) => setList ( [ ] ) , [ ] ) ;
563+
564+ return [ list , { set, push, removeAt, insertAt, updateAt, clear } ] ;
576565}
577566
578567export function useLockBodyScroll ( ) {
0 commit comments