【发布时间】:2025-12-23 22:40:17
【问题描述】:
我正在尝试从 json 文件中获取数据,但它总是返回 [object][object]
这里是json文件https://my-json-server.typicode.com/khanh21011999/demo/user
这里是获取数据的请求函数
export function requestGetUser() {
return axios({
method: 'get',
url: 'https://my-json-server.typicode.com/khanh21011999/demo/user',
});
}
这是我用来获取数据的方法
function* loginSaga(action) {
console.log('Saga is working')
const getJson = yield call(requestGetUser) //same
const getJsonData = JSON.stringify(getJson)
const getJsonUsername = String(getJsonData.username)
console.log('GetJson '+getJson)
const getJsonPassword = String(getJsonData.password)
if (String(action.data.username) === getJsonUsername) {
if (String(action.data.password) === getJsonPassword) {
console.log('saga login success')
yield put({type: 'LOGIN_SUCCESS'})
SaveToAsyncStorage(action.data)
}
else {
console.log('saga password fail')
}
}
else {
console.log("saga user fail")
}
}
export {loginSaga}
奇怪的是我使用在线教程来获取数据,它可以使用(数据如上图所示)
工作方法
export function* handleGetUser(action) {
try {
const response = yield call(requestGetUser); //same
const { data } = response;
yield put(setUser(data));
} catch (error) {
console.log(error);
}
}
设置用户
export const setUser = (user) => ({
type: actionList.SET_USER,
user,
});
获取用户信息
export const GetUserInfo = (user, password) => {
return{
type: actionList.GET_USER_INFO,
data: {user, password}, //same??
}
};
这里是导出功能
export function* watchSaga() {
yield takeLatest(GET_USER, handleGetUser); //work
yield takeLatest(GET_USER_INFO,loginSaga) //notwork
}
一个不同的是工作方法有减速器
const initState = {
user: undefined,
};
const User = (state = initState, action) => {
switch (action.type) {
case actionList.SET_USER:
const {user} = action;
return {...state,user};
default:
return state;
}
};
export default User;
但我的方法没有,(我认为数据保存在状态操作中)
【问题讨论】:
-
为什么是
const getJsonData = JSON.stringify(getJson)?试试const getJsonData = getJson -
感谢您的回答,但它不起作用,它已经在
getJson返回[object][object],它显示在console.log -
我的json格式错了吗?
-
将
console.log('GetJson '+getJson)替换为console.log(getJson)。如果您将 json 与字符串连接,您将始终得到 GETJson[object][object] -
或者你可以使用这个
console.log('GetJson ', getJson)
标签: reactjs react-native redux axios redux-saga