Javascript 使用Router.Transitiono()对路由器1.0进行反应,无需导航混入
是否有一种更简单的方法可以从组件访问Javascript 使用Router.Transitiono()对路由器1.0进行反应,无需导航混入,javascript,reactjs,ecmascript-6,react-router,Javascript,Reactjs,Ecmascript 6,React Router,是否有一种更简单的方法可以从组件访问路由器对象,以便在不使用导航mixin的情况下调用transitiono()?这是一个ES6组件。目前,在一个类似按钮点击的事件中,我一直在写这样的东西: class按钮扩展React.Component{ handleClick(e){ e、 预防默认值(); var router=this.\u reactInternalInstance.\u context.router; router.transitiono('/search'); } render(
路由器
对象,以便在不使用导航mixin的情况下调用transitiono()
?这是一个ES6组件。目前,在一个类似按钮点击的事件中,我一直在写这样的东西:
class按钮扩展React.Component{
handleClick(e){
e、 预防默认值();
var router=this.\u reactInternalInstance.\u context.router;
router.transitiono('/search');
}
render(){
返回(
{this.props.children}
);
}
}
Per的注释,将上下文作为参数添加到构造函数中,将允许您访问路由器
class按钮扩展React.Component{
构造函数(道具、上下文){
超级(道具、背景);
this.context=上下文;
}
handleClick(e){
e、 预防默认值();
this.context.router.transitiono('/search');
}
render(){
返回(
{this.props.children}
);
}
}
Button.contextTypes={
路由器:React.PropTypes.object.isRequired
};
困惑,为什么不干脆这个.context.router
?ES6中的上下文目前还没有文档记录。您接受构造函数参数中的上下文,并将上下文传递给super。然后可以正常访问上下文。在中编写示例。谢谢@matgesel!!我将在下面记录解决方案。