Rendered more hooks than during the previous render. Ошибка react

Есть такой код компонента, выдает ошибку Rendered more hooks than during the previous render.

  export const DrawingElementSettings:FC<ШDrawingElementSettings> = memo(({pressedElement, setActive,active}) => {
      const [choosedTools, setChoosedTools]=useState<string>('Стиль')
      const graphic=useAppSelector(state=>state.graphics.find(gr=>gr.choosed===true)!)
      const [price1,setPrice1]=useState<number | string>(0)
      const [price2,setPrice2]=useState<number | string>(0)
      const [copyPrice1,setCopyPrice1]=useState<number | string>(0)
      const [copyPrice2,setCopyPrice2]=useState<number | string>(0)
      const [isConfirm, setIsConfirm]=useState<isActiveConfirm>({name:'',nameEl:null,active:false})
      const [isReplace, setIsReplace]=useState<isReplacement>({name:'',nameEl:null,active:false,settings:null,textSettings:null})
      const [activeSave, setActiveSave]=useState<boolean>(false)
      const classGraphic=useAppSelector(state=>state.classesGraphic[graphic.id])
      const element=classGraphic.drawingElements?.elements.find(el=>el.uuid===pressedElement.uuid)
      const [copyTextSettings]=useState<ITextData>(element!.textSettings)
      const [copyMainSettings]=useState(element!.settings)
      const name=GetNameElementTitle(element!.name)
      const ref=useRef<HTMLDivElement>(null)
      const isClicked = useRef<boolean>(false);
      const refHeader=useRef<HTMLDivElement>(null)
      const coords = useRef<{
        startX: number,
        startY: number,
        lastX: number,
        lastY: number
      }>({
        startX: 0,
        startY: 0,
        lastX: 0,
        lastY: 0
      })
      useEffect(() => {
        if (!ref.current || !refHeader.current) return;
    
        const box = ref.current;
        const header=refHeader.current
        const middle=window.innerWidth/2-box.clientWidth/2
        box.style.left=`${middle}px`;
        box.style.top='50px'
        if(box.clientHeight<window.innerHeight-310){
          const middle=window.innerHeight/2-box.clientHeight/2
          box.style.top=`${middle}px`
          coords.current.lastY = middle;
        }
        coords.current.lastX = middle;
        const onMouseDown = (e: MouseEvent) => {
          isClicked.current = true;
          coords.current.startX = e.clientX;
          coords.current.startY = e.clientY;
        }
    
        const onMouseUp = (e: MouseEvent) => {
          isClicked.current = false;
          coords.current.lastX = box.offsetLeft;
          coords.current.lastY = box.offsetTop;
        }
        const onMouseMove = (e: MouseEvent) => {
          if (!isClicked.current) return;
    
          const nextX = e.clientX - coords.current.startX + coords.current.lastX;
          const nextY = e.clientY - coords.current.startY + coords.current.lastY;
    
          box.style.top = `${nextY}px`;
          box.style.left = `${nextX}px`;
        }
    
        header.addEventListener('mousedown', onMouseDown);
        document.addEventListener('mouseup', onMouseUp);
        document.addEventListener('mousemove', onMouseMove);
        const cleanup = () => {
          header.removeEventListener('mousedown', onMouseDown);
          document.removeEventListener('mouseup', onMouseUp);
          document.removeEventListener('mousemove', onMouseMove);
          coords.current.startX = 0;
          coords.current.startY = 0;
          coords.current.lastX = middle;
          coords.current.lastY = 0;
        }
        return cleanup;
      }, [active])
      const onClose=()=>{
        setActive({active:false,flag:{isHover:false, uuid:''}})
      }
      useOutsideClick(ref,onClose,active)
      return (
        <>
          <div className={styles.wrap} ref={ref}>
            <div style={{display:'flex',alignItems:'center', padding:'20px 20px 0px 20px'}} ref={refHeader}>
              <div className={styles.header}>
                <h2>{name}</h2>
                <CreateOutlinedIcon/>
              </div>
              <div className={styles.close} onClick={onClose}>
                <CloseIcon/>
              </div>
            </div>
            <ToolsDrawingElement data={dataElements.segment.toolsOption} choosedTools={choosedTools} nameEl={element!.name} setChoosedTools={setChoosedTools}/>
            {dataElements.segment.toolsComponents[choosedTools as keyof typeof dataElements.segment.toolsComponents]({pressedElement})}
            <FooterSettingsElement pressedElement={pressedElement} setIsConfirm={setIsConfirm} choosedTools={choosedTools} copyPrice1={copyPrice1} copyPrice2={copyPrice2} setActiveSave={setActiveSave} onClose={onClose} copyMainSettings={copyMainSettings} copyTextSettings={copyTextSettings}/> 
            {activeSave && <SavePresetPopUp setActiveSave={setActiveSave} element={element!} setIsReplace={setIsReplace} />}
            {isConfirm.active && <ConfirmPopUp setActive={setIsConfirm}  isActive={isConfirm}/>}
            {isReplace.active && <ReplacePopUp setActive={setIsReplace} setActiveSave={setActiveSave} active={isReplace}/>}
          </div>
        </>
      )
    })

Проблема, думаю в этой строчке: {dataElements.segment.toolsComponents[choosedTools as keyof typeof dataElements.segment.toolsComponents]({pressedElement})}. Но как тогда исправить? Само поле toolsComponents представляет собой объект ключами которого является react компоненты, таким образом в этой строке я вовзращаю компонент, который находится в ключе объекта toolsComponents.


Ответы (0 шт):