#870·ink

useCursor 要求组件知道它显示的位置

作者: Macil创建于 2026年2月10日更新于 2026年3月30日

新的 useCursor 钩子的 setCursorPosition 方法要求您指定渲染 Cursor 的绝对(相对于墨水装置)坐标,如果您想从不是根组件的组件中使用它,或者如果您大量使用 <Box> 进行布局,则非常不方便。例如,如果我们想要更新像 ink-ui 的 TextInput 这样的组件以使用 useCursor,我们需要让它接受指定其渲染位置的属性(因为它可能会在标题之后渲染或嵌入带边框的 <Box> 中),并且根据父组件的渲染结果,计算此位置可能需要用户在一个或多个 <Box> 元素上使用 measureElement。需要 measureElement 表示 Cursor 在初始渲染时无法正确定位,并且表示组件可能需要在每次可能影响布局的渲染中调用 measureElement 以更新 Cursor 的坐标。这一切都破坏了 React 组件的清晰封装。如果 Ink 提供了一个 <Cursor /> 元素,则您永远不需要将组件自身的坐标作为属性传递给它,并且您永远不需要将 useEffectmeasureElement 结合起来以测量布局定位。更新像 ink-ui 的 TextInput 这样的组件只需要在正确位置添加一个 <Cursor /> 元素即可。

内容来源: vadimdemedes/ink