如何在hash中将对象传递给hashHistory.push()

时间:2016-09-30 15:58:27

标签: reactjs react-router

任何人都知道如何将对象传递给hashHistory.push()?

这是一个代码段:

redirectToDrug(id, drug) {
  hashHistory.push(`/infusions/library/${id}`, drug);
}

尝试在那里获取药物信息,以便我不必再次查询数据库中的药物信息,因为我已经在父类中使用过它。

2 个答案:

答案 0 :(得分:7)

您可以将带有查询的对象传递给push函数:

@Html.DropDownList("abc", 
            new SelectList(Model.holdTypes.Select(v=>new SelectListItem { Value = v,
                                                   Text = v}),"Value","Text",item.holdType))

然后在 / infusuons / library / $ {id} 页面中访问您的对象:

router.push({
  pathname: `/infusions/library/${id}`,
  query: { drug }
})

Link to official docs

如果您的对象不太复杂,这是一个很好的解决方案,但如果 drug 是一个庞大的数据结构,我会使用单向数据流框架,例如{{ 3}}

答案 1 :(得分:1)

您可以将对象的json字符串传递为:

var data = JSON.stringify(drug);
hashHistory.push({pathname: `/infusions/library/${id}`, query: {data}});

如果传递直接对象,则无法在另一个组件中检索。以上解决方案为我工作。