Reactjs React路由器中相似路由间的切换

Reactjs React路由器中相似路由间的切换,reactjs,flux,react-router,Reactjs,Flux,React Router,我有这样的路线: <Route name="itemDetails" handler={ItemDetails} path="/item/:itemId"/> 下面是itemDetails代码: var React = require('react'); var Store = require('../../stores/app-store'); var Preloader = require('../template/app-preloader'); var NewEstateI

我有这样的路线:

<Route name="itemDetails" handler={ItemDetails} path="/item/:itemId"/>
下面是itemDetails代码:

var React = require('react');
var Store = require('../../stores/app-store');
var Preloader = require('../template/app-preloader');
var NewEstateItem = require('./app-newestateitem');
var NewEstateRelated = require('./app-newestaterelated');

var NewEstateDetails = React.createClass({




    getInitialState: function() {
    return { item: null };
  },


  componentWillMount: function() {
    itemId = this.props.params.itemId;
    console.log('ItemId:', itemId);
    Store.getNewEstateById(itemId,this._getNewEstateDetails);
  },

    render: function() {
        var item = this.state.item;
    if(!item) {
      return (<Preloader />);
    }
        return (
            <div className="row">
                <div className="container flex-container">
                    <div className="col s12 m12 l8">
                        <div className="col s12">
                            <h4>{item.Name}</h4>
                        </div>
                    <div className="col l4 hide-on-med-and-down margintop">
                    <h5 className="center">Related items</h5>
                        <div className="col s12">
                            <NewEstateRelated Price={item.Price}/>      
                        </div>
                    </div>
                </div>
            </div>
        );
    },

    _getNewEstateDetails: function (item) {
    this.setState({item:item});
  }

});

module.exports = NewEstateDetails;

我认为这就是问题所在:

您的路由器需要
:id

<Route name="itemDetails" handler={ItemDetails} path="/item/:id"/>
我非常确定它应该匹配并且是:

<Link to="ItemDetails" params={{id: item.objectId, CustomID: item.CustomID}} className="btn</Link>

如果您发布ItemDetails中的代码将有所帮助。你在那里的渲染方法中对router.getCurrentParams().id做了什么吗?关于这个:router.getCurrentParams().id我没有。我应该如何处理它?可能只是在第一次渲染时调用componentDidMount,这是唯一一个使用所选项更新状态的地方-看起来像router.getCurrentParams().itemId与此相同。props.params.itemId如何添加侦听器,哪一个会触发路径更改的方法?对不起,我的错误-在这个描述中输入错误。我已经更正了你确定商店里的数据不同吗?我能想到的唯一一件事是,您的存储实际上返回了相同的数据,因此UI不会更新。选中:存储中的数据没有什么不同。为什么?我不知道为什么你的商店没有返回不同的内容…如果没有看到所有的代码,我帮不了你。看起来这个问题是无效的,因为路线确实有效,不是你的商店有效!张贴你的商店和其他相关代码,看看它是否有助于破译问题。
<Link to="ItemDetails" params={{itemId: item.objectId, CustomID: item.CustomID}} className="btn</Link>
var getNewEstateData = {

  getNewEstateById: function(objectId, callback) {
    console.log('store.objectId', objectId);
    function NewEstateData() {};
    var item = Backendless.Persistence.of( NewEstateData ).findById( objectId );
    console.log("store.getNewEstateById", item);
    callback(item);
  },

  getAllNewEstate: function(callback) {
    function NewEstateData() {};
    var items = Backendless.Persistence.of( NewEstateData ).find().data;
    callback(items)
  },

  getRelatedNewEstateItems: function (priceBottom, priceTop, callback) {
    function NewEstateData() {};
    var items = Backendless.Persistence.of( NewEstateData );
    var dataQuery = {
      condition: "Price >= "+priceBottom
    }
    var query = items.find( dataQuery ).data
    var output = query.slice(0,3)
    console.log('relatedItems', query);
    callback(output)
  }
};

module.exports = getNewEstateData;
<Route name="itemDetails" handler={ItemDetails} path="/item/:id"/>
<Link to="ItemDetails" params={{itemId: item.objectId, CustomID: item.CustomID}} className="btn</Link>
<Link to="ItemDetails" params={{id: item.objectId, CustomID: item.CustomID}} className="btn</Link>
// given a route config like this
<Route name="user" path="/users/:userId"/>

// create a link with this
<Link to="user" params={{userId: "123"}}/>

// though, if your user properties match up to the dynamic segements:
<Link to="user" params={user}/>