Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应路由器参数化重定向_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 反应路由器参数化重定向

Javascript 反应路由器参数化重定向,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我很难弄清楚如何参数化路由字符串以进行编程重定向 我在/constants/routes.js中的设置 export defaults { user_details: '/user/:id/details', } 我想以编程方式将:id参数按如下方式推送 import routes from '../../constants/routes.js' const UserListItem = ({name, id, history}) => ( <li onClick={ ()

我很难弄清楚如何参数化路由字符串以进行编程重定向

我在
/constants/routes.js中的设置

export defaults {
  user_details: '/user/:id/details',
}
我想以编程方式将
:id
参数按如下方式推送

import routes from '../../constants/routes.js'
const UserListItem = ({name, id, history}) => (
  <li onClick={ () => history.push(routes.user_details, {id}) }>
  {name}
  </li>
)
从“../../constants/routes.js”导入路由
constUserListItem=({name,id,history})=>(
  • history.push(routes.user_details,{id}}> {name}
  • )

    互联网上似乎充斥着
    ,这似乎并不理想,因为我想重用我的固定路线取决于你如何使用这些路线常量,我想。我也不知道“绕过任何规则”是什么意思,但是你可以把常数改成函数

    export defaults {
      userDetails: (id = ":id") => `/user/${id}/details`,
    }
    
    用法:

    path={routes.userDetails()} -> `/user/:id/details`
    
    history.push(routes.userDetails("abc123")) -> `/user/abc123/details`
    

    routes.user\u details.replace(':id',id)
    ?是的,但这将绕过现有的任何规则。我希望你能为这件事做点什么?它不会绕过任何规则。你是什么意思?这是一个一次性的解决方案,我必须为我构建的每个路由进行替换,例如,它不支持
    /user/:id/messages/:status(active | inactive)
    。正如我提到的,我希望react路由器能为此提供一个实用程序。谢谢,我希望react路由器能提供这种类型的实用程序,而不是我自己写的。