-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/useTooltip.ts
Lines 121 to 127 in db49b7e
| useEffect(() => { | |
| recalculatePosition() | |
| }, []) | |
| useEffect(() => { | |
| recalculatePosition() | |
| }, [props.position]) |
При монтировании компонента выполняются все эффекты, следовательно, функция recalculatePosition() вызывается дважды
Предлагаю убрать верхний useEffect
ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/useTooltip.ts
Lines 100 to 113 in db49b7e
| 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)| {props.hidden? null : ( |
А как же &&
ITLab-Core-Lib/libs/react/ui-core/src/lib/tooltip/tooltip.tsx
Lines 39 to 41 in db49b7e
| ref={(e)=>{ | |
| tooltipContent.current = e; | |
| }} |
Почему нельзя просто
ref={tooltipContent}
| const elem = useRef<any>() |
Может вместо
elem назвать tooltipWrapper/tooltipRef (я когда в первый раз в проектах увидел, не сразу понял, что это за elem)Metadata
Metadata
Assignees
Labels
No labels