反应路由器传递参数.如何?

fef*_*efe 3 params reactjs react-router

拥有以下React路由器

const AppRoutes = (
  <Route path="/" handler={Properties}>
    <DefaultRoute handler={PropertyList} />
    <Route path="property/:propId" handler={PropertyDetail}/>
    <NotFoundRoute handler={NotFound} />
  </Route>);

Router.run(AppRoutes, Router.HashLocation, (Root) => {
  React.render(<Root />, document.getElementById('filter-content'));
});
Run Code Online (Sandbox Code Playgroud)

我尝试在子Component中构建动态链接,在这里我有一个测试

<Link to="/property/" params={{ propId: "123"}} ><img src={this.props.data.picture} 
                         data-srcset="http://placehold.it/350x150"  alt="" className="lazyload auto-height" 
                                 data-sizes="auto"/>
                    </Link>
Run Code Online (Sandbox Code Playgroud)

但点击propId没有通过的链接,我做错了什么?

jed*_*ylo 7

为了使其工作,您需要在链接组件的to属性中使用路由名称,否则路由器无法知道您的意思是哪个路由定义,因此无法知道如何处理propId参数.

首先,为您的路线定义名称

<Route name="property" path="property/:propId" handler={PropertyDetail}/>
Run Code Online (Sandbox Code Playgroud)

然后在生成链接时使用该名称:

<Link to="/property/:propId" params={{ propId: "123"}} >
Run Code Online (Sandbox Code Playgroud)