1- import React from 'react' ;
1+ import React , { useCallback , useMemo } from 'react' ;
22import { useDispatch , useSelector } from 'react-redux' ;
33import { TapIcon } from 'assets/icons' ;
44import { MODES , setMode } from 'App/reducers/editorSlice' ;
@@ -19,22 +19,25 @@ export const TapMenu = () => {
1919 const { selectingKit, mixing } = useCurrentPath ( ) ;
2020
2121 // allows disable of tap mode while mixer or changeKit open
22- const activeCB = ( ) => dispatch ( setMode ( MODES . INIT ) ) ;
22+ const activeCB = useCallback ( ( ) => dispatch ( setMode ( MODES . INIT ) ) , [ dispatch ] ) ;
2323
24- let addBtnClasses = 'tap' ;
25- if ( tapPlaying ) addBtnClasses += ' active' ;
26- if ( tapRecording ) addBtnClasses += ' active record' ;
27- return (
28- < PopupMenu
29- name = 'tap'
30- Icon = { TapIcon }
31- active = { selectingKit || mixing }
32- activeCB = { activeCB }
33- addBtnClasses = { addBtnClasses }
34- >
35- < TapMenuItems />
36- </ PopupMenu >
37- ) ;
24+ const memo = useMemo ( ( ) => {
25+ let addBtnClasses = 'tap' ;
26+ if ( tapPlaying ) addBtnClasses += ' active' ;
27+ if ( tapRecording ) addBtnClasses += ' active record' ;
28+ return (
29+ < PopupMenu
30+ name = 'tap'
31+ Icon = { TapIcon }
32+ active = { selectingKit || mixing }
33+ activeCB = { activeCB }
34+ addBtnClasses = { addBtnClasses }
35+ >
36+ < TapMenuItems />
37+ </ PopupMenu >
38+ ) ;
39+ } , [ activeCB , mixing , selectingKit , tapPlaying , tapRecording ] ) ;
40+ return memo ;
3841} ;
3942
4043const modes = [ MODES . TAP , MODES . TAP_RECORD ] ;
0 commit comments