Javascript 为什么我的User.props总是未定义?反应本机和还原

Javascript 为什么我的User.props总是未定义?反应本机和还原,javascript,reactjs,react-native,redux,react-redux,Javascript,Reactjs,React Native,Redux,React Redux,我正在与React Native和Redux合作 我需要在操作后访问react redux上的用户状态。 在我的组件(console.log(this.props.User))上执行操作之后,我尝试使用一个简单的console.log执行此操作,但它始终未定义 这是我的联合收割机减速器: import { combineReducers } from 'redux'; import User from './userReducer'; export default combineReducer

我正在与React Native和Redux合作

我需要在操作后访问react redux上的用户状态。 在我的组件(console.log(this.props.User))上执行操作之后,我尝试使用一个简单的console.log执行此操作,但它始终未定义

这是我的联合收割机减速器:

import { combineReducers } from 'redux'; import User from './userReducer';

export default combineReducers({
    User });
import {
    REGISTER_USER,
    SIGNIN_USER } from '../types';

export default function(state=INITIAL_STATE, action){
    switch(action.type){

       case  SIGNIN_USER:
       return {
        ...state,
        userData:{
                 uid: action.payload.localId || false,
                 token: action.payload.idToken || false,
                 refreshToken: action.payload.refreshToken || false,
        }
    };
    break;

        default:
            return state
    } }
export function signIn(data){
    const request = axios({
        method:'POST',
        url:SIGNIN, 
        data:{
            email: data.email,
            password: data.password,
            returnSecureToken:true 
        },
        headers:{
            "Content-Type":"application/json"
        }
        }).then(response => {
            return response.data
        }).catch( e=> {
            console.log(e)
        });

    return {
        type: SIGNIN_USER,
        payload: request
    }
}
import { connect } from 'react-redux';
import { signIn } from '../Store/Actions/userActions';
import { bindActionCreators } from 'redux';


class LoginComponent extends React.Component {


 state = {
    email:'',
    password:''
  };

      signInUser () {

        try {
          this.props.signIn(this.state).then( () => {
           **console.log(this.props.User)**
          })
        } catch (error) {
          console.log(error)
        }
      }

}

const mapStateToProps = (state) => {
  return{
    User: state.User
  }
}

const mapDispatchToProps =( dispatch ) => {
  return bindActionCreators({signIn}, dispatch)
}

export default connect(mapDispatchToProps,mapDispatchToProps)(LoginComponent);
这是我的用户列表:

import { combineReducers } from 'redux'; import User from './userReducer';

export default combineReducers({
    User });
import {
    REGISTER_USER,
    SIGNIN_USER } from '../types';

export default function(state=INITIAL_STATE, action){
    switch(action.type){

       case  SIGNIN_USER:
       return {
        ...state,
        userData:{
                 uid: action.payload.localId || false,
                 token: action.payload.idToken || false,
                 refreshToken: action.payload.refreshToken || false,
        }
    };
    break;

        default:
            return state
    } }
export function signIn(data){
    const request = axios({
        method:'POST',
        url:SIGNIN, 
        data:{
            email: data.email,
            password: data.password,
            returnSecureToken:true 
        },
        headers:{
            "Content-Type":"application/json"
        }
        }).then(response => {
            return response.data
        }).catch( e=> {
            console.log(e)
        });

    return {
        type: SIGNIN_USER,
        payload: request
    }
}
import { connect } from 'react-redux';
import { signIn } from '../Store/Actions/userActions';
import { bindActionCreators } from 'redux';


class LoginComponent extends React.Component {


 state = {
    email:'',
    password:''
  };

      signInUser () {

        try {
          this.props.signIn(this.state).then( () => {
           **console.log(this.props.User)**
          })
        } catch (error) {
          console.log(error)
        }
      }

}

const mapStateToProps = (state) => {
  return{
    User: state.User
  }
}

const mapDispatchToProps =( dispatch ) => {
  return bindActionCreators({signIn}, dispatch)
}

export default connect(mapDispatchToProps,mapDispatchToProps)(LoginComponent);
这是我的行动:

import { combineReducers } from 'redux'; import User from './userReducer';

export default combineReducers({
    User });
import {
    REGISTER_USER,
    SIGNIN_USER } from '../types';

export default function(state=INITIAL_STATE, action){
    switch(action.type){

       case  SIGNIN_USER:
       return {
        ...state,
        userData:{
                 uid: action.payload.localId || false,
                 token: action.payload.idToken || false,
                 refreshToken: action.payload.refreshToken || false,
        }
    };
    break;

        default:
            return state
    } }
export function signIn(data){
    const request = axios({
        method:'POST',
        url:SIGNIN, 
        data:{
            email: data.email,
            password: data.password,
            returnSecureToken:true 
        },
        headers:{
            "Content-Type":"application/json"
        }
        }).then(response => {
            return response.data
        }).catch( e=> {
            console.log(e)
        });

    return {
        type: SIGNIN_USER,
        payload: request
    }
}
import { connect } from 'react-redux';
import { signIn } from '../Store/Actions/userActions';
import { bindActionCreators } from 'redux';


class LoginComponent extends React.Component {


 state = {
    email:'',
    password:''
  };

      signInUser () {

        try {
          this.props.signIn(this.state).then( () => {
           **console.log(this.props.User)**
          })
        } catch (error) {
          console.log(error)
        }
      }

}

const mapStateToProps = (state) => {
  return{
    User: state.User
  }
}

const mapDispatchToProps =( dispatch ) => {
  return bindActionCreators({signIn}, dispatch)
}

export default connect(mapDispatchToProps,mapDispatchToProps)(LoginComponent);
我尝试获取操作后状态的组件:

import { combineReducers } from 'redux'; import User from './userReducer';

export default combineReducers({
    User });
import {
    REGISTER_USER,
    SIGNIN_USER } from '../types';

export default function(state=INITIAL_STATE, action){
    switch(action.type){

       case  SIGNIN_USER:
       return {
        ...state,
        userData:{
                 uid: action.payload.localId || false,
                 token: action.payload.idToken || false,
                 refreshToken: action.payload.refreshToken || false,
        }
    };
    break;

        default:
            return state
    } }
export function signIn(data){
    const request = axios({
        method:'POST',
        url:SIGNIN, 
        data:{
            email: data.email,
            password: data.password,
            returnSecureToken:true 
        },
        headers:{
            "Content-Type":"application/json"
        }
        }).then(response => {
            return response.data
        }).catch( e=> {
            console.log(e)
        });

    return {
        type: SIGNIN_USER,
        payload: request
    }
}
import { connect } from 'react-redux';
import { signIn } from '../Store/Actions/userActions';
import { bindActionCreators } from 'redux';


class LoginComponent extends React.Component {


 state = {
    email:'',
    password:''
  };

      signInUser () {

        try {
          this.props.signIn(this.state).then( () => {
           **console.log(this.props.User)**
          })
        } catch (error) {
          console.log(error)
        }
      }

}

const mapStateToProps = (state) => {
  return{
    User: state.User
  }
}

const mapDispatchToProps =( dispatch ) => {
  return bindActionCreators({signIn}, dispatch)
}

export default connect(mapDispatchToProps,mapDispatchToProps)(LoginComponent);
日志上的响应只是:未定义


我犯了什么错??谢谢

传递到
connect
方法的参数顺序错误,它希望
MapStateTrops
第一个,而
mapDispatchToProps
第二个 参数因此,您的代码必须是导出默认连接(MapStateTops、mapDispatchToProps)(LoginComponent)

这是签名

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

尝试访问
componentdiddupdate
@MonkeyDLuffy中的this.props.User。我按照你说的做了,但结果是一样的:未定义。componentDidUpdate(){console.log(this.props.User);}
mapDispatchToProps,mapDispatchToProps
,一个应该是state,一个是dispatchToProps,我从来没有见过这么简单的东西。非常感谢你的朋友!!