Javascript 我无法在redux中使用默认状态值

Javascript 我无法在redux中使用默认状态值,javascript,reactjs,react-native,redux,react-redux,Javascript,Reactjs,React Native,Redux,React Redux,我无法在redux中使用默认状态值 你好,, 我有一个发送登录操作的函数, 我希望首字母是假的 但是当我把这个值放到render方法中时,它给了我一个错误 无法读取未定义的属性“isLogin” 虽然在reducer中我添加了一个initialState let initialState = { isLogin: false, }; const userReducer = (state = initialState, action) => { switch (action.typ

我无法在redux中使用默认状态值

你好,, 我有一个发送登录操作的函数, 我希望首字母是假的

但是当我把这个值放到render方法中时,它给了我一个错误

无法读取未定义的属性“isLogin”

虽然在reducer中我添加了一个initialState

let initialState = {
  isLogin: false,
};

const userReducer = (state = initialState, action) => {
  switch (action.type) {
    case IS_LOGIN:
      state = {
        ...state,
        isLogin: true,
      };
      break;
    default:
      return state;
  }
  return state;
};
这是商店

const store = createStore(
  combineReducers({
    user: userReducer,
    count: countPlayReducer,
  }),
);
行动

export const isLoginFunc = isLogin => {
  return {
    type: IS_LOGIN,
    payload: isLogin,
  };
};
用户界面/调度

import {isLoginFunc} from '../../redux/actions/isLoginAction';

 signIn = async data => {
   this.setState({loading: true}); // maybe here the wrong?
   API.post('/login', data)
    .then(async response => {
     let {
       data: {
         data: {
           response: {token},
         },
      },
    } = response;
    this.props.dispatch(isLoginFunc(true));
    await saveToken('id_token', token);
    this.setState({loading: false}, () =>
      this.props.navigation.navigate({
        key: 'TabHome',
        routeName: 'TabHome',
      }),
    );
  })
  .catch(error => {
    console.log(error);
    this.setState({loading: false, error: error.response.data});
  });
})


看起来您正在使用以下方法映射redux状态:

mapStateToProps = state => {
  return {
    isLogin: state.user,
  };
};
但您尝试通过以下方式访问isLogin:

this.props.user.isLogin

看起来应该将其更改为:

this.props.isLogin.isLogin

但是,您可能希望将映射改为以下内容:

mapStateToProps = state => {
  return {
    isLogin: state.user.isLogin,
  };
};
因此,您可以简单地使用:


此.props.isLogin

看起来您正在使用以下方法映射redux状态:

mapStateToProps = state => {
  return {
    isLogin: state.user,
  };
};
但您尝试通过以下方式访问isLogin:

this.props.user.isLogin

看起来应该将其更改为:

this.props.isLogin.isLogin

但是,您可能希望将映射改为以下内容:

mapStateToProps = state => {
  return {
    isLogin: state.user.isLogin,
  };
};
因此,您可以简单地使用:


这个.props.isLogin

嗯,我不知道我是否正确,如果我错了,请告诉我,现在state.user这意味着我们导入了用户密钥缩减器,在这个缩减器中,我们希望通过用户访问isLogin.isLogin?@OliverD Good point!!除了prop访问之外,我还添加了一个关于如何更改映射的额外建议。谢谢Oliver,但是当我记录console.logthis.props.isLogin时,我得到了真实值,但是当我在isLogin中添加它时:{this.props.isLogin}//它是空的,没有给我一个真实的值我的意思是你是否也在我的回答中更新了映射到isLogin:state.user.isLogin建议的props?如果你能把一个JSFIDLE放在一起,我可以更好地看看你现在有什么?嗯,我不知道我是否正确,请告诉我我是否错了,现在state.user这意味着我们导入了用户密钥缩减器,在这个缩减器中,我们希望按用户访问isLogin。isLogin?@OliverD Good point!!除了prop访问之外,我还添加了一个关于如何更改映射的额外建议。谢谢Oliver,但是当我记录console.logthis.props.isLogin时,我得到了真实值,但是当我在isLogin中添加它时:{this.props.isLogin}//它是空的,没有给我一个真实的值我的意思是你是否也在我的回答中更新了映射到isLogin:state.user.isLogin建议的props?如果你能把一个JSFIDLE放在一起,我就能更好地了解你现在拥有的东西了?