Javascript 用axios json响应reactjs填充钩子
我很难思考如何用API响应(json)填充钩子 参见下面的代码Javascript 用axios json响应reactjs填充钩子,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我很难思考如何用API响应(json)填充钩子 参见下面的代码 cosnt [loginResponse, setloginResponse] = useState({ Token: '', UserID: '', //from user-id UserName: '', //from user-userName firstName: '', //from user-firstName rcCode: '' //from attributes-rcCode
cosnt [loginResponse, setloginResponse] = useState({
Token: '',
UserID: '', //from user-id
UserName: '', //from user-userName
firstName: '', //from user-firstName
rcCode: '' //from attributes-rcCode
})
const login = async () => {
await axios.get('/API')
.then(response => {
console.log('response.data', response.data.resp)
});
}
下面是console.log
(response.data.resp
)的结果
对于console.log
(response.data
):
我想用这些数据填充我的钩子,以便在我的页面上使用它们
如果我尝试console.log
(response.data.resp.data
),我得到了undefined
)
在console.log(response)
上,我得到:
谢谢。在。然后
setLoginResponse({...loginResponse, Token: response.data.resp.data.token, UserId: response.data.resp.data.user.id, ...}
您可以首先分解响应对象的结构,并将值存储在变量中,以使setLoginResponse更易于阅读
在中。然后
setLoginResponse({...loginResponse, Token: response.data.resp.data.token, UserId: response.data.resp.data.user.id, ...}
您可以首先分解响应对象的结构,并将值存储在变量中,以使setLoginResponse更易于阅读
不要同时使用
async/wait
和.then()
。使用这两种方法中的任何一种
const login = async () => {
const response = await axios.get('/API');
const parsedData = JSON.parse(response.data.resp);
const userData = parsedData.data;
setLoginResponse({
Token: userData.token,
UserID: userData.user.id,
UserName: userData.user.userName,
firstName: userData.user.firstName,
rcCode: userData.user.attributes.rcCode
});
}
不要同时使用
async/wait
和.then()
。使用这两种方法中的任何一种
const login = async () => {
const response = await axios.get('/API');
const parsedData = JSON.parse(response.data.resp);
const userData = parsedData.data;
setLoginResponse({
Token: userData.token,
UserID: userData.user.id,
UserName: userData.user.userName,
firstName: userData.user.firstName,
rcCode: userData.user.attributes.rcCode
});
}
嗨@alaric,在console.log上,我无法访问response.data.resp.data。对于response.data.resp.data.token,我收到错误
未处理的拒绝(TypeError):无法读取未定义的
@Rymrk的属性“token”,您正在尝试在中访问此值。然后,对吗?我在上面声明了console.log的返回。检查上面的Rajiv Punjabi响应,我没有注意到async/Wait抱歉,在您的情况下,您不能将两者混合使用,根据您的喜好使用promise或async Wait Hi@alaric,我收到了相同的错误Hi@alaric,在console.log上,我无法访问response.data.resp.data。对于response.data.resp.data.token,我收到错误未处理的拒绝(TypeError):无法读取未定义的
@Rymrk的属性“token”,您正在尝试在中访问此值。然后,对吗?我在上面声明了console.log的返回。检查上面的Rajiv Punjabi响应,我没有注意到async/Wait抱歉,在您的情况下,您不能将两者混合使用,使用promise或async Wait,如您所愿Hi@alaric,我在发布代码时遇到了相同的错误,请先验证。Hi@zhulien,您是指格式吗?很抱歉,我下次会将其格式化。不,您的响应json和请求的函数都无效。嗨@zhulien,您能帮我回答我的问题吗?当您发布代码时,请先验证它。嗨@zhulien,您是指格式吗?很抱歉,我下次会把它格式化。不,你的json回复和请求的函数都无效。你好@zhulien,你能帮我回答我的问题吗?你好先生,我试过把console.log放在setLoginresponse之前,但我得到了未定义的你好@rajiv punjabi,我得到了这个错误未经处理的拒绝(TypeError):无法读取未定义的属性“token”
。我还尝试了console.log用户数据,但是我得到了未定义的
您确定从后端服务得到了正确的响应吗?基于您的演示数据,它工作正常。你好@rajiv punjabi,我用console.log(response)
的屏幕截图更新了我的问题。感谢您的EMOVE const userData line并将其替换为此const parsedData=JSON.parse(yourResponse.resp.data);const userData=parsedData.data
Hi Sir我尝试在setLoginresponse之前放置console.log,但我得到了undefined
Hi@rajiv punjabi,我得到了这个错误未处理的拒绝(TypeError):无法读取未定义的属性“token”
。我还尝试了console.log用户数据,但是我得到了未定义的
您确定从后端服务得到了正确的响应吗?基于您的演示数据,它工作正常。你好@rajiv punjabi,我用console.log(response)
的屏幕截图更新了我的问题。感谢您的EMOVE const userData line并将其替换为此const parsedData=JSON.parse(yourResponse.resp.data);const userData=parsedData.data代码>