我设置了一个简单的链接,用于链接到列表中特定项的详细信息部分,但是,当我在Link组件中传递setter函数时,它会出错,因为所有其他状态变量都为空。
代码如下所示:
<Link
to={"device" + "/" + comp.hostname}
state={{
time:time,
date:date,
currentJobs: currentJobs,
setCurrentJobs: setCurrentJobs
}}
我的问题是,当我传递setCurrentJobs
变量时,链接会将我带到下一页,但是说时间是未定义的。
我相信我已经在链接引用的组件中设置了useLocation
:
const location = useLocation()
const time = location.state.time
const date = location.state.date
const currentJobs = location.state.currentJobs
const setCurrentJobs = location.state.setCurrentJobs
如果不传递setter函数,代码也能正常工作,是不是Link组件不允许传递函数?
1条答案
按热度按时间pgky5nke1#
将setter放在另一个状态中是有问题的,考虑一下这种方法,它只是使用React上下文来创建可在父/子/兄弟组件之间使用的可共享
state
和setState
。使用React 18.2,工艺路线6:
package.json
index.js
Provider.js
App.js
ShowKeys.js
SubComponentA.js
SubComponentB.js
尝试一下我刚刚创建的working Sandbox,以更好地理解可共享状态,它有助于避免prop-drilling,并且是在组件之间共享状态的一个干净的解决方案。
这是与所有3个组件交互后的最终结果-所有3个组件都知道彼此的状态。