我以两种不同的方式将道具传递给同一个组件。
一次通过路线路径:-
<Route path="/CreateProfile/:title" exact component={ProfileForm} />
另一个链接为:
<Table.Cell><Link to={{ // it will land to the same component ProfileForm
pathname: "/EditProfile",
props: {
profile : profile,
title: "Edit Profile"
}
}} >Edit Profile</Link></Table.Cell>
在我的 ProfileForm 中,我尝试将道具阅读为:-
useEffect(() => {
if(props.match.params.title){ // it gives no error.
setTitle(props.match.params.title);
}else if(props.location.props.title){ // gives error .props.title undefiened
setTitle(props.location.props.title);
}
// if(props.match.params.profile){
// setProfile(props.location.state.profile)
// }
if(props.location.props.profile){
setProfile(props.location.props.profile)
console.log("profile: "+props.location.props.profile)
}
}
else if(props.location.props.title)
当它来自路由器时给出错误。这是意料之中的,因为我通过 Link 设置了道具。我注意到props.match.params.title
无论是否设置都不会给出任何错误。所以我希望通过比赛从 Link 传递道具,以便 Route 和 Link 都能正常工作。是否可以通过比赛传递道具?或者我该如何解决这个问题?