Я бэкэнд-парень, пытаюсь запустить самое первое приложение реакции / JS.
Я пытаюсь передать некоторые данные аутентификации из AuthContext для использования в извлечении из другого компонента, и я могу ' t для моей жизни выяснить, почему бы и нет.
user
это вложенный объект, например, так:
Я могу получить доступ к объектам первого уровня, как user.username, но углубляясь, как user.signInUserSession.accessToken, я получаю неопределенное каждый раз.
Я даже могу получить доступ к jwtToken в инструментах реагирования с помощью $r.hooks[0].value.signInUserSession.accessToken.jwtToken
.
AuthContext. js
import React, {createContext, useEffect, useState} from 'react';
import {Auth} from "aws-amplify";
export const AuthContext = createContext(false);
const AuthContextProvider = (props) => {
const [user, setUser] = useState([false]);
useEffect(() => {
Auth.currentAuthenticatedUser()
.then(user => setUser(user))
.catch(err => console.log(err));
}, []);
return (
<AuthContext.Provider value={user}>
{props.children}
</AuthContext.Provider>
);
};
export default AuthContextProvider;
Body. js
import React, { useState, useEffect, useContext } from 'react';
import {Content} from "./styles"
import {AuthContext} from "../../../contexts/AuthContext";
function Body() {
const user = useContext(AuthContext);
const [investor, setInvestor] = useState([]);
const jwtToken = user.signInUserSession.accessToken.jwtToken;
useEffect(() => console.log("Bearer ".concat(jwtToken)), [user]);
useEffect(() => {
fetch("https://DOMAIN/investors/overview/v3/?token=".concat(jwtToken), {
method: 'GET',
headers: {
'Authorization': "Bearer ".concat(jwtToken)
}
})
.then(response => response.json())
.then((responseData) => {
setInvestor(responseData);
})
.catch(error => setInvestor({ error }));
}, [user]);
return (
<Content>{investor.total_value}</Content>
)
}
export default Body
Любая помощь по тому, что мне не хватает, очень ценится!
EDIT - фактический объект скопирован из devTools (не знаете, как проверить фактический пользовательский объект напрямую, кроме этого?):
[
{
"name": "Context",
"value": {
"username": "XXX",
"pool": "{advancedSecurityDataCollectionFlag: true, client: …}",
"Session": null,
"client": "{endpoint: \"https://cognito-idp.ap-southeast-2.amaz…}",
"signInUserSession": {
"idToken": {
"jwtToken": "MDRjYmUiLCJhdWQiOiI0dmRwbmo2b2JhaGpyc25hbmtkNvdXRoZUiOiJwb3dlcndy...",
"payload": "{aud: \"4vdpnj6obahjrsnankda91s2va\", auth_time: 1583…}",
"constructor": "ƒ CognitoIdToken() {}",
"getJwtToken": "ƒ getJwtToken() {}",
"getExpiration": "ƒ getExpiration() {}",
"getIssuedAt": "ƒ getIssuedAt() {}",
"decodePayload": "ƒ decodePayload() {}"
},
"refreshToken": {
"token": "iJKXkXkGbJbBgnRPMN84TWBdsES-mZBGN3yxGd-6555-a67nsFuB9UZKG-s-mk3EHRqs-WfeDxpOw9ia5OtI-ZZTNh2pK...",
"getToken": "ƒ getToken() {}"
},
"accessToken": {
"jwtToken": "GET_THIS_TOKEN.zb3V0aGVhc3QtMi5hbWpIjoi...",
"payload": "{auth_time: 1583469821, client_id: n…}",
"constructor": "ƒ CognitoAccessToken() {}",
"getJwtToken": "ƒ getJwtToken() {}",
"getExpiration": "ƒ getExpiration() {}",
.........