Reactjs Can';t从React Router 4嵌套路由中的Redux Connect()获取道具

Reactjs Can';t从React Router 4嵌套路由中的Redux Connect()获取道具,reactjs,react-redux,react-router-redux,react-router-v4,Reactjs,React Redux,React Router Redux,React Router V4,我正在尝试从嵌套路由中的Redux connect()访问道具。但是不能让它工作 我有以下组成部分: main.js const initState={} const history = createBrowserHistory(); const store = configureStore(initState, history); ReactDOM.render( <Provider store={store}> <ConnectedRouter history

我正在尝试从嵌套路由中的Redux connect()访问道具。但是不能让它工作

我有以下组成部分:

main.js const initState={}

const history = createBrowserHistory();
const store = configureStore(initState, history);

ReactDOM.render(
  <Provider store={store}>
    <ConnectedRouter history={history}>
      <App />
    </ConnectedRouter>
  </Provider>,
  document.getElementById('root')
);
const history=createBrowserHistory();
const store=configureStore(initState,history);
ReactDOM.render(
,
document.getElementById('root'))
);
在app.js中,我设置了几个路由

class App extends Component {
  render() {
    return (
      <Switch>
        <Route path="/auth" component={Auth} />
        <Route exact path="/" component={Home} />
      </Switch>
    );
  }
}

export default withRouter(App);
类应用程序扩展组件{
render(){
返回(
);
}
}
使用路由器(App)导出默认值;
然后在Auth组件中

function Auth(props) {
  return (
    <div>
      <Route exact path={`${props.match.path}/login`} component={Login} />
    </div>
  );
}
export default withRouter(Auth);
export class Login extends Component {
  login({email, password}) {
    this.props.login({ email, password });
  }

  render() {
    return (
      <Form
        onSubmit={(credentials) => this.login(credentials)} />
    );
  }
}

Login.propTypes = {
  login: PropTypes.func
}

const mapDispatchToProps = (dispatch) => {
  return {
    login: (credentials) => dispatch(loginRequest(credentials))
  };
}

export default connect(null, mapDispatchToProps)(Login);
函数身份验证(道具){
返回(
);
}
使用路由器导出默认值(Auth);
最后是我的登录组件

function Auth(props) {
  return (
    <div>
      <Route exact path={`${props.match.path}/login`} component={Login} />
    </div>
  );
}
export default withRouter(Auth);
export class Login extends Component {
  login({email, password}) {
    this.props.login({ email, password });
  }

  render() {
    return (
      <Form
        onSubmit={(credentials) => this.login(credentials)} />
    );
  }
}

Login.propTypes = {
  login: PropTypes.func
}

const mapDispatchToProps = (dispatch) => {
  return {
    login: (credentials) => dispatch(loginRequest(credentials))
  };
}

export default connect(null, mapDispatchToProps)(Login);
导出类登录扩展组件{
登录({电子邮件,密码}){
this.props.login({email,password});
}
render(){
返回(
this.login(凭据)}/>
);
}
}
Login.propTypes={
登录名:PropTypes.func
}
const mapDispatchToProps=(调度)=>{
返回{
登录:(凭证)=>分派(登录请求(凭证))
};
}
导出默认连接(空,mapDispatchToProps)(登录);
触发
this.props.login({email,password})应发送我的
登录请求(凭证)
操作

但是,我得到一个
this.props.login不是一个函数
错误。实际上,我的登录组件中没有设置任何道具。
connect()
似乎根本没有效果

父母可以使用
connect()
注入的道具,但是这条二级路线无法获得它应该接收的道具

我希望这足够清楚。。我错过什么了吗?你知道会出什么问题吗


谢谢你的帮助

导出类登录扩展组件{
定义逻辑类时删除
导出
,并确保将逻辑作为默认组件导入,如
从'/path/to/Login
导入登录

class Login extends Component {
  login({email, password}) {
    this.props.login({ email, password });
  }

  render() {
    return (
      <Form
        onSubmit={(credentials) => this.login(credentials)} />
    );
  }
}

Login.propTypes = {
  login: PropTypes.func
}

const mapDispatchToProps = (dispatch) => {
  return {
    login: (credentials) => dispatch(loginRequest(credentials))
  };
}

export default connect(null, mapDispatchToProps)(Login);
类登录扩展组件{
登录({电子邮件,密码}){
this.props.login({email,password});
}
render(){
返回(
this.login(凭据)}/>
);
}
}
Login.propTypes={
登录名:PropTypes.func
}
const mapDispatchToProps=(调度)=>{
返回{
登录:(凭证)=>分派(登录请求(凭证))
};
}
导出默认连接(空,mapDispatchToProps)(登录);

删除
导出
,同时从
导出类登录扩展组件{
定义逻辑类,并确保将逻辑作为默认组件导入,如
从“/path/to/Login导入登录

class Login extends Component {
  login({email, password}) {
    this.props.login({ email, password });
  }

  render() {
    return (
      <Form
        onSubmit={(credentials) => this.login(credentials)} />
    );
  }
}

Login.propTypes = {
  login: PropTypes.func
}

const mapDispatchToProps = (dispatch) => {
  return {
    login: (credentials) => dispatch(loginRequest(credentials))
  };
}

export default connect(null, mapDispatchToProps)(Login);
类登录扩展组件{
登录({电子邮件,密码}){
this.props.login({email,password});
}
render(){
返回(
this.login(凭据)}/>
);
}
}
Login.propTypes={
登录名:PropTypes.func
}
const mapDispatchToProps=(调度)=>{
返回{
登录:(凭证)=>分派(登录请求(凭证))
};
}
导出默认连接(空,mapDispatchToProps)(登录);

您的登录函数是否具有正确的此绑定@KamilSocha登录功能收到的所有道具不取决于连接,这就是我无法理解的原因。。但是Shubham khatri指出了我的登录组件中两个导出的错误。。如果没有第二双眼睛,我会花上一段时间才意识到这一点!谢谢你的帮助!您的登录函数对此绑定是否具有正确的权限@KamilSocha登录功能收到的所有道具不取决于连接,这就是我无法理解的原因。。但是Shubham khatri指出了我的登录组件中两个导出的错误。。如果没有第二双眼睛,我会花上一段时间才意识到这一点!谢谢你的帮助!谢谢!就这样!我还在想我到底是不是瞎了。。如果没有另一双眼睛,我可能要花上一段时间才能弄明白!非常感谢您的帮助@shubham khatriThanks!就这样!我还在想我到底是不是瞎了。。如果没有另一双眼睛,我可能要花上一段时间才能弄明白!谢谢你的帮助@shubham khatri