为什么我的react-native-copilot之旅没有在mount上开始?

问题描述 投票:0回答:2

每当我尝试从 useEffect() 开始游览时,即使将 setTimeout 传递给它,它也不起作用。 示例代码如下:

const tour = useCopilot();
useEffect(()=>{
    setTimeout(()=>{
        tour.start("repaircat");
    }, 600)
},[]);

在第一个屏幕中,我通过将 start() 传递给按钮单击来开始游览,但在第二个屏幕中,我想通过使用 useEffect 的步骤名称调用 start 来再次启动游览。

有什么方法可以不点击任何按钮就开始游览吗?

react-native
2个回答
0
投票

游览可能未在您的 useEffect 挂钩中启动,因为当您尝试开始游览时,组件或游览内容未完全渲染/初始化。此问题的一种解决方法是使用 useLayoutEffect 挂钩而不是 useEffect。 useLayoutEffect 钩子在 React 执行完所有 DOM 变更后立即同步运行,这可以确保您的组件和游览内容在游览开始之前已完全准备好,因此请使用 useLayoutEffect 而不是 useEffect 并尝试一下


0
投票

你必须使用

onLayout

<View onLayout={()=>tour.start("repaircat")} >...</View>
© www.soinside.com 2019 - 2024. All rights reserved.