|
useEffect(() => { |
|
recalculatePosition() |
|
}, []) |
|
|
|
useEffect(() => { |
|
recalculatePosition() |
|
}, [props.position]) |
При монтировании компонента выполняются все эффекты, следовательно, функция recalculatePosition() вызывается дважды
Предлагаю убрать верхний useEffect
|
setStyles({ |
|
"bottom": props.position === "bottom", |
|
"top": props.position === "top", |
|
"right": props.position === "right", |
|
"left": props.position === "left", |
|
"bottom-left": props.position === "bottom-left", |
|
"bottom-right": props.position === "bottom-right", |
|
"top-left": props.position === "top-left", |
|
"top-right": props.position === "top-right", |
|
"left-top": props.position === "left-top", |
|
"left-bottom": props.position === "left-bottom", |
|
"right-top": props.position === "right-top", |
|
"right-bottom": props.position === "right-bottom", |
|
}) |
Можно упростить?
setStyles({ [props.position]: true })
|
function setStyles(condition: any) { |
Такая идея есть
function setStyles(condition) {
const position = Object.keys(condition)[0]
const tooltipStyless = {
top: position==='top'||position==='top-left'||position==='top-right' ? -tooltipHeight - 10 : position==='right'||position==='left' ? centerVertical : -6
left: ...,
right: ...,
bottom: ...,
}
classes.add(styles[`tooltip-content-${position}`])
setTooltipStyles(tooltipStyless)
А как же &&
|
ref={(e)=>{ |
|
tooltipContent.current = e; |
|
}} |
Почему нельзя просто
ref={tooltipContent}
|
const elem = useRef<any>() |
Может вместо
elem назвать
tooltipWrapper/
tooltipRef (я когда в первый раз в проектах увидел, не сразу понял, что это за
elem)
ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/useTooltip.ts
Lines 121 to 127 in db49b7e
При монтировании компонента выполняются все эффекты, следовательно, функция
recalculatePosition()вызывается дваждыПредлагаю убрать верхний
useEffectITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/useTooltip.ts
Lines 100 to 113 in db49b7e
Можно упростить?
ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/useTooltip.ts
Line 59 in db49b7e
Такая идея есть
ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/tooltip.tsx
Line 37 in db49b7e
А как же
&&ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/tooltip.tsx
Lines 39 to 41 in db49b7e
Почему нельзя просто
ref={tooltipContent}ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/useTooltip.ts
Line 7 in db49b7e
Может вместо
elemназватьtooltipWrapper/tooltipRef(я когда в первый раз в проектах увидел, не сразу понял, что это заelem)