将React Route传递给子组件

Alex Zhulin

我有路由器功能,可以从其中调用我的Home组件

import React from "react";
import { Route, Switch } from "react-router-dom";
import Home from "./containers/Home";
import NotFound from "./containers/NotFound";
import InputForm from "./containers/InputForm";
import Logout from "./containers/Logout";

export default function Routes() {
    return (
        <Switch>
            <Route path="/" exact component={Home}/>
            <Route path="/login" render={(props) => <InputForm {...props} buttonName={"Вход"} type={"login"} />}/>
            <Route path="/signup" render={(props) => <InputForm {...props} buttonName={"Регистрация"} type={"signup"} />}/>
            <Route path="/logout" exact component={Logout}/>
            <Route component={NotFound}/>
        </Switch>
    )
}

在我的Home组件中,我已经像这样连接到Redux存储

import React from "react";
import { connect } from "react-redux";
import Promo from "./Promo";
import Profile from "./Profile";

const mapStateToProps = state => {
    return { currentUser: state.currentUser };
};

const HomeConnected =({ currentUser }) => {
    if (currentUser.token === undefined) {
        return(
            <Promo />
        )
    } else {
        return(
            <Profile />
        )
    }

};

const Home = connect(mapStateToProps)(HomeConnected);
export default Home

在我的Promo组件中,我想创建重定向到我的应用程序中这样的位置

import React from "react";
import Jumbotron from "react-bootstrap/lib/Jumbotron";
import Button from "react-bootstrap/lib/Button";

export default class Promo extends React.Component{
    handleRegisterClick = () => {
        this.props.history.push("/signup");
    };

    render() {
        console.log(this)
        return (
            <Jumbotron>
                <p>
                    <Button bsStyle="primary" onClick={this.handleRegisterClick}>Try this</Button>
                </p>
            </Jumbotron>
        );
    }
}

但是点击按钮后出现错误

   5 | 
   6 | export default class Promo extends React.Component{
   7 |     handleRegisterClick = () => {
>  8 |         this.props.history.push("/signup");
   9 |     };
  10 | 
  11 |     render() {

如何将路由器传递给子组件?

认识Zaveri

您可以将该子组件withRouter包装由提供的HOC(Wrapper)react-router-dom

这提供了对react-router API的访问权限。这意味着您将获得所有方法和道具。

Jus用withRouter

import { withRouter } from "react-router-dom";

...

class Promo extends React.Component{

}

export default withRouter(Promo)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React:将功能传递给子组件

来自分类Dev

React 将事件传递给子组件

来自分类Dev

React:将函数属性传递给纯子组件-渲染

来自分类Dev

如何将React Hook传递给子组件

来自分类Dev

将React点击处理程序传递给子组件

来自分类Dev

如何将道具传递给子React组件?

来自分类Dev

将JWT传递给子React组件是否安全?

来自分类Dev

React TypeScript将函数传递给子组件

来自分类Dev

无法将函数传递给React子组件

来自分类Dev

将道具传递给子组件的问题

来自分类Dev

将模型传递给子组件

来自分类Dev

将多个引用传递给子组件

来自分类Dev

将事件结果传递给子组件

来自分类Dev

将方法传递给子组件

来自分类Dev

将道具传递给子组件Cyclejs

来自分类Dev

将道具传递给子组件onClick

来自分类Dev

将角色列表传递给子组件

来自分类Dev

将变量传递给子组件

来自分类Dev

React-将jSON数据传递给子组件的子组件

来自分类Dev

将数据从服务传递给父组件,然后从父组件传递给子组件

来自分类Dev

如何将状态与父组件传递给子组件

来自分类Dev

如何将子组件的状态传递给父组件?

来自分类Dev

传递状态或道具以将值传递给子组件

来自分类Dev

react-router如何通过<Links>和<Route>将prop传递给其他组件?

来自分类Dev

React Router - 通过 props 将匹配传递给使用 Route::render 渲染的组件

来自分类Dev

将函数传递给React中的组件

来自分类Dev

React js将props传递给组件

来自分类Dev

将参数传递给React组件

来自分类Dev

将React Hook传递给功能组件