局部提示框怎么只在当前组件区域显示?
我在用 React 做一个表单页面,想在输入框校验失败时,在输入框下方显示一个红色的小提示。但用了全局的 Toast 或 Notification 组件后,提示总是出现在页面顶部或角落,根本不是我想要的“局部”效果。
我试过自己写个 div 来控制显示隐藏,但样式和动画不好统一,而且多个输入框的话状态管理也麻烦。有没有更优雅的方式?比如基于某个容器定位的提示组件?
function InputWithHint({ value, error }) {
return (
<div className="input-wrapper">
<input value={value} />
{error && <div className="local-hint">{error}</div>}
</div>
);
}
最简单靠谱的方式就是用绝对定位 + 父级相对定位,别整花活:
对应的 CSS:
这样提示框就会死死贴在输入框下面,不会飘到别的地方去。
多个输入框也不用担心状态管理,每个组件自己管理自己的 error 就行,React 的组件天然就是隔离的,状态自然就分开了。
如果后期想加个「防抖提示」或者「自动消失」,可以在 error 变化时用
setTimeout延迟清除,或者用useEffect做个缓存机制——但一般表单校验不需要这么复杂,保持简单才是王道。