我可以使用state通过react-router-dom(6.14.0)中的Link组件传递常规数据。但是,如果你发送一个函数,它是未定义的。
这里的另一个帖子提到使用“数据”而不是“状态”,但这似乎也不起作用。
<Link
className={styles.link}
style={{textDecoration: 'none'}}
to='/feedback-detail'
state={{ feedback: request, requests: requests }}
data={{ setRequests: setRequests }}
>
字符串
然后在/feedback-detal页面上:
const location = useLocation();
const { feedback, requests } = location.state;
const { setRequests } = location.data;
型
我仍然得到:
“无法解构'location.data'的属性'setRequests',因为它未定义”
我需要能够从页面更新状态,使用setRequest。不幸的是,目前的设置方式是它们不共享父节点,所以这是我认为发送数据的最简单的方法,除了setRequests函数外,它适用于所有内容。
我刚刚意识到的另一件事...我使用NextJS 13,但使用react-router-dom的链接。我看到Next有来自next/link的Link。也许我应该用这个。虽然我不确定这是否会改变解决方案。
1条答案
按热度按时间acruukt91#
我认为您可以尝试使用encodeURIComponent对函数进行编码,如下所示
字符串
然后,在feedback-detail组件中,使用useParams获取函数String
型
解码你的功能
型
然后,
型
要使用它,只需调用yourFunction()