每当我尝试从 useEffect() 开始游览时,即使将 setTimeout 传递给它,它也不起作用。 示例代码如下:
const tour = useCopilot();
useEffect(()=>{
setTimeout(()=>{
tour.start("repaircat");
}, 600)
},[]);
在第一个屏幕中,我通过将 start() 传递给按钮单击来开始游览,但在第二个屏幕中,我想通过使用 useEffect 的步骤名称调用 start 来再次启动游览。
有什么方法可以不点击任何按钮就开始游览吗?
游览可能未在您的 useEffect 挂钩中启动,因为当您尝试开始游览时,组件或游览内容未完全渲染/初始化。此问题的一种解决方法是使用 useLayoutEffect 挂钩而不是 useEffect。 useLayoutEffect 钩子在 React 执行完所有 DOM 变更后立即同步运行,这可以确保您的组件和游览内容在游览开始之前已完全准备好,因此请使用 useLayoutEffect 而不是 useEffect 并尝试一下
你必须使用
onLayout
<View onLayout={()=>tour.start("repaircat")} >...</View>