这更像是一个民意调查。当使用React时,您是通过将它们链接到URL
还是作为state
来传递路由参数?
是否有最佳实践可以遵循?
参数:
navigate('/edit/${user.id}')`
状态:
navigate('/edit', { state : {id :user.id} } )
对我来说,这取决于我要做的行动。
如果我想要一个带有一些动态信息的路由,比如我不想存储在URL中的聊天id,我更喜欢将其设置为历史状态。
但是,对于REST操作(编辑/添加等),我更喜欢在URL本身链接id
。它有一些好处。我看到的主要是,您可以复制URL,将其粘贴到其他地方(不同的计算机/浏览器),并且您仍然可以访问与您链接的id
的详细信息相同的页面。
这取决于您喜欢什么以及您的项目需要什么。两者的区别如下:
navigate('/edit', { state : {id :user.id} })
不会在url
中写入id
。你在useLocation钩子的帮助下使用它,像这样:
import { useLocation } from "react-router-dom"; function Edit() { const { state } = useLocation(); return ( <div> {state.id} </div> ); } export default Edit;
它是更灵活的,你可以或不通过
id
。例如,当你从login
页面导航时,你可以传递它,但在其他情况下不可以。
navigate('/edit/${user.id}')
意味着您在设置路由时已经定义了slug
,如下所示:
<Route path = "/edit/:id" element= {<Edit/>}/>
使用useParmas钩子:
import { useParams } from "react-router-dom"; function Edit() { const { id } = useParams(); return ( <div> {id} </div> ); } export default Edit;
在最后一种情况下,
id
应该一直在那里,以形成正确的path
。