Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 React router dom goBack(),如何从另一个js文件继承道具?_Javascript_Reactjs_React Router_React Router Dom - Fatal编程技术网

Javascript React router dom goBack(),如何从另一个js文件继承道具?

Javascript React router dom goBack(),如何从另一个js文件继承道具?,javascript,reactjs,react-router,react-router-dom,Javascript,Reactjs,React Router,React Router Dom,我的路由路径位于单独的文件中,该文件仅包含路由,仅此而已,这是我在其中导入的唯一文件。 问题是,我想在另一个js文件中指定一个按钮,它将执行goBack函数,但我不想在这里导入react router dom,而是从主js文件继承prop。 因此,我在App.js中添加了这行代码,这是只包含路由的主文件 constructor(props) { super(props); this.goBack=this.goBack.bind(this); }

我的路由路径位于单独的文件中,该文件仅包含路由,仅此而已,这是我在其中导入的唯一文件。 问题是,我想在另一个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>
有没有办法这样做,或者我真的需要导入路由器dom并将构造函数添加到另一个文件中?

您不需要在新文件中导入路由器dom。您只需要将历史道具一直传递到按钮组件。或者,在上下文或redux存储变量中设置history prop-希望back按钮没有嵌套在组件树的深处。提示:试着让你的组件在树中使用路由器道具,以避免通过路由器道具

我的路由器设置如下:

    <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组件中的历史道具。

这就是我所要求的。是的,它没有嵌套那么深。但我不知道如何使用那个道具。我的主文件几乎相同。当我添加“返回到另一个js文件”时,它会让我出错。那么你确实从路由器传递了道具?{…props}或history={props.history}到路由组件一直到按钮组件?如果在按钮组件中记录this.props.history,您会得到什么?您需要将history.goBack引用一直传递到按钮组件,否则您将无法在按钮组件中访问它。请稍候,我是否需要安装历史记录包?BrowserHistory不再是react router dom的一部分?我使用的是react router dom:4.2.2,没有安装历史记录。