fix: @mention popover position calculation with requestAnimationFrame
parent
d649d4364d
commit
2d4c57a78b
|
|
@ -74,12 +74,19 @@ export default function ChatInput(props: {
|
||||||
console.log('[@mention] matched @ at position:', { atIndex, query });
|
console.log('[@mention] matched @ at position:', { atIndex, query });
|
||||||
if (!query.includes(' ')) {
|
if (!query.includes(' ')) {
|
||||||
setMentionQuery(query);
|
setMentionQuery(query);
|
||||||
// 计算位置
|
// 计算位置 - 使用 inputRef 获取最新 DOM 位置
|
||||||
const textarea = e.target;
|
requestAnimationFrame(() => {
|
||||||
const rect = textarea.getBoundingClientRect();
|
const textarea = inputRef.current;
|
||||||
setMentionPos({ top: rect.bottom, left: rect.left + 10 });
|
if (!textarea) {
|
||||||
console.log('[@mention] show popover:', { top: rect.bottom, left: rect.left + 10, query });
|
console.log('[@mention] inputRef.current is null');
|
||||||
setShowMentionPopover(true);
|
return;
|
||||||
|
}
|
||||||
|
const rect = textarea.getBoundingClientRect();
|
||||||
|
console.log('[@mention] textarea rect:', rect);
|
||||||
|
setMentionPos({ top: rect.bottom, left: rect.left + 10 });
|
||||||
|
console.log('[@mention] show popover:', { top: rect.bottom, left: rect.left + 10, query });
|
||||||
|
setShowMentionPopover(true);
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue