Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Router.Transitiono()对路由器1.0进行反应,无需导航混入_Javascript_Reactjs_Ecmascript 6_React Router - Fatal编程技术网

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!!我将在下面记录解决方案。