我想运行一个fetch()来发送手机号码和密码,并获取一个“用户ID”和“结果”,我想将其作为状态添加到Redux存储中。 我面临的问题是,尽管在单击提交后获取了正确的值,但是当我使用SelectSelect()时却没有得到这些状态。相反,我得到的是在reducer初始化时设置的值(默认情况下返回)。当我第二次按“提交”时,我得到的用户标识为“ 11”,而结果为resultof =“ loginsuccess”。 有没有一种方法可以避免获取默认值,而是获取正确的值?我该如何处理?
CODE Login1.js
import React, { useState, useEffect } from "react";
import { View, Alert, Button } from "react-native";
import { Title, TextInput } from "react-native-paper";
import { fetchUserDataSuccess } from "./redux/reducers/actions";
import { useDispatch, useSelector } from "react-redux";
export default function Login1({navigation}) {
const [mobile, setMobile] = useState("123456789");
const [password, setPassword] = useState("123");
const userid=useSelector(state=>state.userdatareducer.UserId);
const resultof=useSelector(state=>state.userdatareducer.resultof);
const dispatch=useDispatch();
function handleSubmitPress() {
fetch(
"URL returning {"resultof":"loginsuccess","UserId":"11"}",
{
method: "Get",
}
)
.then((response) => response.json())
.then((userData) => {
if (userData.resultof="loginsuccess")
{
alert(userData.resultof);
dispatch(fetchUserDataSuccess(userData));
if (resultof=="resultq") {
alert(JSON.stringify(userid));
alert(JSON.stringify(resultof));
dispatch(fetchUserDataSuccess(userData));
alert(JSON.stringify(userid));
alert(JSON.stringify(resultof));
} else {
alert(JSON.stringify(userid));
alert(JSON.stringify(resultof));
navigation.navigate("DashBoard")
}
}
return userData.UserId;
})
.catch((error) => alert(error));
}
return (
<View
style={{
backgroundColor: "skyblue",
alignItems: "center",
justifyContent: "center",
}}
>
<TextInput
label="Text1 "
value={mobile}
onChangeText={(text) => setMobile(text)}
/>
<TextInput
label="Text2"
value={password}
onChangeText={(text) => setPassword(text)}
/>
<Button title="Submit" onPress={() => handleSubmitPress()} />
</View>
);
}
userdatareducer CODE
import { FETCH_USERDATA_SUCCESS } from "./actions";
const initialData = {
UserId: 12,
resultof: "resultq",
};
export default function userdatareducer(state = initialData, action) {
switch (action.type) {
case FETCH_USERDATA_SUCCESS:
{
return {
// ...state,
// state,
UserId:action.payload.UserId,
resultof:action.payload.resultof,
};
}
default:
return {
... state,
};
}
}