Как мне передать данные из jwt после входа в систему на другой экран

#reactjs #react-native #jwt

#reactjs #react-native #jwt

Вопрос:

Я получаю Access и user от своего токена JWT, который успешно входит в систему, но проблема в том, что я могу получить доступ только user на экране входа в систему, я хочу передать эти данные (пользователя) на другой экран, экран учетной записи (фактически конечная точка API экрана учетной записи).

 function LoginScreen(props) {
  const navigation = useNavigation();
  const auth = useAuth();
  const [loginFailed, setLoginFailed] = useState(false);

  const handleSubmit = async ({ username, password }) => {
    const result = await authApi.login(username, password);
    
    if (!result.ok) return setLoginFailed(true);
    setLoginFailed(false);
    console.log(result.data.access);
    auth.logIn(result.data.access);
    
    x = result.data.user; //This is the information I need in another screen
    console.log(x);
  };
 

и это моя конечная точка API, которую я вызываю в AccountScreen для отображения информации о пользователе, поэтому мне нужно получить этого пользователя с LoginScreen и передать его имени пользователя ниже

 import client from "./clientAccount";

const username = "que";
const username3 = username.toString();
const endpoint = `/users/${username}/`;
const getUser = (username) => client.get(endpoint);

export default {
  getUser,
};
 

Я пробовал реагировать на контекст, но, похоже, работает только при рендеринге, я пробовал Redux, но пока этого не понимаю.

Комментарии:

1. сохраните токен входа в asyncstorage при входе в систему… когда вы переходите на другой экран, используя этот токен, извлекайте пользовательские данные..

Ответ №1:

Для этого есть много способов. Самым простым и идеальным способом будет сохранение данных в локальном хранилище или хранилище сеанса, в зависимости от характера приложения, после входа пользователя в систему. Кроме того, важно удалить пользовательскую информацию из хранилища после выхода пользователя из системы.

Пример того, как хранить данные в локальном хранилище:

 localStorage.setItem('user', userName); // userName will be  information you need to store, e.g your result.data.user 
 

и как получить данные:

 localStorage.getItem('user')
 

Однако в react-native нет локального хранилища, но вы можете использовать что-то вроде https://github.com/react-native-async-storage/async-storage или другие доступные хранилища.

PS: Извините, сначала я пропустил тег react-native.

Комментарии:

1. Привет, только что кое-что заметил. Он получает элемент нормально. Но не работает на моем экране учетной записи, пока я не перезагружу экран

2. Можете ли вы проверить на своем экране учетной записи, пытаетесь ли вы извлечь элемент, прежде чем устанавливать его? Я предполагаю, что на экране учетной записи вы установите ключ после вызова API.