Javascript 如何使用React Router 3使路由参数可选?

Javascript 如何使用React Router 3使路由参数可选?,javascript,reactjs,Javascript,Reactjs,我访问example.com/crud/4没关系,但当我点击example.com/crud时就不行了。如何将id参数设置为可选参数 import { Router, browserHistory } from 'react-router'; import App from './index.js'; function errorLoading(err) { console.log('Dynamic page loading failed! Error: ' + err); } func

我访问example.com/crud/4没关系,但当我点击example.com/crud时就不行了。如何将
id
参数设置为可选参数

import { Router, browserHistory } from 'react-router';
import App from './index.js';

function errorLoading(err) {
  console.log('Dynamic page loading failed! Error: ' + err);
}

function loadRoute(cb) {
  return (module) => cb(null, module.default);
}

const routes = {
  component: App,
  childRoutes: [
    {
      path: 'dashboard/crud/:id',
      getComponent(location, cb) {
        System.import('./entries/crud')
          .then(loadRoute(cb))
          .catch(errorLoading);
      }
    }

  ]
};

export default () => <Router history={browserHistory} routes={routes} />;
从'react Router'导入{Router,browserHistory};
从“/index.js”导入应用程序;
函数错误加载(err){
console.log('动态页面加载失败!错误:'+err);
}
功能加载路径(cb){
返回值(module)=>cb(空,module.default);
}
常数路由={
组件:应用程序,
儿童路线:[
{
路径:“dashboard/crud/:id”,
getComponent(位置,cb){
系统导入(“./entries/crud”)
.然后(装载路线(cb))
.捕获(错误加载);
}
}
]
};
导出默认值()=>;

我正在使用react router 3。

要使任何
参数成为可选的,您需要使用
(/:param_name)
,它将被视为可选的,请尝试以下操作:

path: 'dashboard/crud(/:id)',
更新

要根据params值呈现不同的组件,需要编写一个单独的包装组件,将
params
传递给该文件,根据
params
值返回组件,如下所示:

export default class Wrapper extends React.Component{
    render(){
        let params = this.props.params.id;
        if(params == 'view') return <A/>;
        else if(params == 'edit') return <B/>;
    }
}
导出默认类包装扩展React.Component{
render(){
设params=this.props.params.id;
if(params=='view')返回;
else if(params=='edit')返回;
}
}

要使任何
参数成为可选的,您需要使用
(/:param_name)
,它将被视为可选的,请尝试以下操作:

path: 'dashboard/crud(/:id)',
更新

要根据params值呈现不同的组件,需要编写一个单独的包装组件,将
params
传递给该文件,根据
params
值返回组件,如下所示:

export default class Wrapper extends React.Component{
    render(){
        let params = this.props.params.id;
        if(params == 'view') return <A/>;
        else if(params == 'edit') return <B/>;
    }
}
导出默认类包装扩展React.Component{
render(){
设params=this.props.params.id;
if(params=='view')返回;
else if(params=='edit')返回;
}
}

2个参数怎么样?像crud/view和crud/edit一样,可以加载不同的组件。你需要两种不同的路由。这在我点击example.com/crud/5时有效,但在我点击链接时无效。我的链接组件代码是ok的,必须指定绝对路径。比如说2个param怎么样?像crud/view和crud/edit一样,可以加载不同的组件。你需要两种不同的路由。这在我点击example.com/crud/5时有效,但在我点击链接时无效。我的链接组件代码是ok的,必须指定绝对路径。喜欢