React Suite Whisper组件open方法延迟生效问题求助
解决Rsuite Whisper组件延迟打开Popover的问题
你当前代码里调用whisperRef.current.open(5000)无法实现延迟5秒打开的原因是:Whisper的open方法参数并非延迟时间,而是用于传递触发事件的event对象,直接传入数值不会生效。
要实现延迟打开,需要用setTimeout包裹open方法的调用,同时修改Whisper的触发方式,避免按钮点击时默认触发Popover打开。
修改后的代码如下:
import React from 'react'; import "rsuite/dist/rsuite.min.css"; import { useRef } from 'react'; import { Button, Popover, Whisper } from 'rsuite'; export default function App() { const whisperRef = useRef(null); const handleclick = () => { // 延迟5000毫秒后调用open方法 setTimeout(() => { whisperRef.current.open(); }, 5000); }; return ( <div style={{ display: 'block', width: 700, paddingLeft: 30, marginTop: 50 }}> <Whisper ref={whisperRef} trigger="none" // 取消默认点击触发,避免立即显示 placement="right" speaker={<Popover>Required Text</Popover>} > <Button appearance="subtle" onClick={handleclick}>Right</Button> </Whisper> <br /> <hr /> </div> ); }
关键修改说明:
- 将Whisper的
trigger属性设为"none",取消默认的点击触发逻辑,让Popover的打开完全由自定义代码控制。 - 在
handleclick函数中通过setTimeout延迟5000毫秒执行open方法,实现预期的延迟打开效果。
内容的提问来源于stack exchange,提问作者Aditya Gupta
相关产品推荐
相关产品推荐

