Page 1 of 1

关于小程序中route使用的疑惑

Posted: 2025年 Mar 23日 11:48
by mark

为什么在小程序首页里(Home页面)调用router.push('/setting');没有触发useEffect的销毁函数呢?
useEffect(() => {
return () => {
console.log('页面卸载');//这里没有被执行
};
}, []);


Re: 关于小程序中route使用的疑惑

Posted: 2025年 Mar 23日 12:35
by mark

是不是可以理解为route.push编译到小程序后,方法等同于ty.navigateTo?


Re: 关于小程序中route使用的疑惑

Posted: 2025年 Mar 23日 12:46
by mark

还有我在Home页面监听了一个dpvalue,在setting页面频繁的修改这个dpvalue, 在home的监听函数也会被频繁的调用,应该如何避免这种问题呢?

Home页面 :
const dpValue = useProps(props => (props as any).dpCode);
useEffect(() => {
console.log('=======触发====');
}, [dpValue]);

Setting页面:
action[dpCode].set(val);


Re: 关于小程序中route使用的疑惑

Posted: 2025年 Mar 23日 13:39
by mark

自问自答的总结一下吧...不知道理解的对不对...
1.ray编译到小程序后 route.push等同于ty.navigateTo,因为页面栈缓存了,所以不会走销毁函数
2.如果需要监听dpValue,并且在离开页面A后,修改dpValue并防止被A页面监听,可以把dpValue放入到useState中,通过onDpDataChange 去setState值


Re: 关于小程序中route使用的疑惑

Posted: 2025年 Mar 24日 12:02
by lshinylee

在 Ray 中如果要监听页面的事件,建议使用 usePageEvent https://developer.tuya.com/cn/miniapp/d ... epageevent


Re: 关于小程序中route使用的疑惑

Posted: 2025年 Mar 26日 13:00
by mark

建议文档中应该给个tips,useProps和useEffect组合使用的时候,需要注意一下,有没有在其他页面修改这个dp值的情况


Re: 关于小程序中route使用的疑惑

Posted: 2025年 Mar 26日 13:52
by lshinylee

感谢你的建议,我们会在最近的文档更新中补充这个提醒