javascript - useSelector() 返回未定义

标签 javascript reactjs react-native redux react-redux

我刚刚学习react-native基础,当使用redux时,我遇到了 useSelector 问题,这是我的一些代码

这是商店组件

//store.js
    initState = {
        loginStatus: false,
    }
    const LoginAction = (state = {initState}, action) => {
        if (action.type == 'changeLogin') {
            return { loginStatus:!state.loginStatus }
        }
        return state
    }
    const store = createStore(LoginAction, composeWithDevTools());
    export default store

这是登录功能

function LoginScreen({ navigation, props }) {
 
 

     const dispatch = useDispatch()
      const Login = useSelector(state => {
        return state.LoginStatus
      })
    
      function getLogin() {
        return Login
      }
      function handleLogin() {
        dispatch({ type: 'changeLogin' })
      }
      console.log('Login ' + Login) // it return undefined

这个方法我试过useSelector state returns undefined (React-Redux)但没用! 这是发生的事情的屏幕截图enter image description here

但是当我将其添加到登录按钮时,它返回 true,然后继续未定义

<Formik
        validateOnMount
        validationSchema={loginValidationSchema}
        initialValues={{ email: '', password: '' }}
        onSubmit={
          () => {
            handleLogin()
            console.log('When submit ' + Login) // true then undefined
            SetTimer();
          }
          // () => navigation.navigate('Login')
        }
      >

enter image description here

请帮忙,非常感谢

最佳答案

您的选择器中的大小写错误。它应该是返回state.loginStatus。此外,您的 LoginAction 从技术上来说是一个reducer,而不是一个操作。

const Login = useSelector(state => {
  return state.loginStatus
})

编辑:reducer 中的另一个问题是初始状态将 initState 作为对象中的顶级键,而意图只是直接分配它:

const LoginAction = (state = initState, action) = {
  // reducer code here
}

关于javascript - useSelector() 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68238916/

相关文章:

javascript - 我是否需要在 cordova/phonegap 项目的所有 html 文件中添加 app.initialize()

JavaScript CORS Post 请求在服务器端有空参数

reactjs - React-Redux 和 React Context API 可以在同一个项目中同时使用吗?

javascript - React 的 webkit.messageHandlers 将 JavaScript 注入(inject) Swift

javascript - react native 异步存储 : TypeError: Cannot read property 'setItem' of undefined

javascript - Web api方法不从angularjs调用

javascript - 使用 Gatsby v3 (css-loader v5) 在 CSS 类名中添加破折号

javascript - Highcharts w/React - 在 JSX 中找不到渲染 div

react-native - 如何设置 PanGestureHandler 中与 react-native-gesture-handler 的初始偏移量?

javascript - 如何在抽屉导航底部对齐抽屉项目?