React-router-dom goBack(),如何从另一个js文件继承prop?
React-router-dom goBack(), how to inherit prop from another js file?
我的路由路径位于单独的文件中,仅包含路由,仅此而已,这是我在其中导入的唯一文件 React-router-dom
。
问题是,我想在另一个 js 文件中指定一个按钮,它将执行 goBack() 函数,但我不想在此处导入 react-router-dom
,而是从主 js 文件继承 prop。
所以,我在 App.js 中添加了这一行(这是只有路由的主文件)
constructor(props) {
super(props);
this.goBack=this.goBack.bind(this);
}
goBack(){
this.props.history.goBack();
}
还有按钮
<button onClick={this.goBack}>Go Back</button>
有没有办法做到这一点,或者我真的需要导入 router-dom
并将构造函数添加到另一个文件?
您不需要在新文件中导入 router-dom
。您只需要将 history
道具一直传递到按钮组件即可。或者,在上下文或 redux 存储变量中设置 history 属性——希望你的后退按钮没有嵌套在组件树的深处。提示:尝试让你的组件在你的树中浅层使用路由器道具,以避免通过路由器道具。
我的路由器设置如下:
<Router>
<div>
<Switch>
<Public exact path="/" component={ConnectedLoginForm} {...props} />
<Route path="/recover-password" component={ConnectedRecoverPasswordForm} />
<Route path="/reset-password/:token" component={ConnectedResetPasswordForm} />
<Route path="/invite/:token" component={ConnectedAcceptInviteForm} />
<Public path="/login" component={ConnectedLoginForm} {...props} />
<Authenticated path="/:co_id" component={ConnectedMainView} {...props} />
</Switch>
</div>
</Router>
因此我可以在我的 ConnectedMainView
组件中访问 history
道具。
我的路由路径位于单独的文件中,仅包含路由,仅此而已,这是我在其中导入的唯一文件 React-router-dom
。
问题是,我想在另一个 js 文件中指定一个按钮,它将执行 goBack() 函数,但我不想在此处导入 react-router-dom
,而是从主 js 文件继承 prop。
所以,我在 App.js 中添加了这一行(这是只有路由的主文件)
constructor(props) {
super(props);
this.goBack=this.goBack.bind(this);
}
goBack(){
this.props.history.goBack();
}
还有按钮
<button onClick={this.goBack}>Go Back</button>
有没有办法做到这一点,或者我真的需要导入 router-dom
并将构造函数添加到另一个文件?
您不需要在新文件中导入 router-dom
。您只需要将 history
道具一直传递到按钮组件即可。或者,在上下文或 redux 存储变量中设置 history 属性——希望你的后退按钮没有嵌套在组件树的深处。提示:尝试让你的组件在你的树中浅层使用路由器道具,以避免通过路由器道具。
我的路由器设置如下:
<Router>
<div>
<Switch>
<Public exact path="/" component={ConnectedLoginForm} {...props} />
<Route path="/recover-password" component={ConnectedRecoverPasswordForm} />
<Route path="/reset-password/:token" component={ConnectedResetPasswordForm} />
<Route path="/invite/:token" component={ConnectedAcceptInviteForm} />
<Public path="/login" component={ConnectedLoginForm} {...props} />
<Authenticated path="/:co_id" component={ConnectedMainView} {...props} />
</Switch>
</div>
</Router>
因此我可以在我的 ConnectedMainView
组件中访问 history
道具。