我刚刚学习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)但没用! 这是发生的事情的屏幕截图
但是当我将其添加到登录按钮时,它返回 true,然后继续未定义
<Formik
validateOnMount
validationSchema={loginValidationSchema}
initialValues={{ email: '', password: '' }}
onSubmit={
() => {
handleLogin()
console.log('When submit ' + Login) // true then undefined
SetTimer();
}
// () => navigation.navigate('Login')
}
>
请帮忙,非常感谢
最佳答案
您的选择器中的大小写错误。它应该是返回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/