#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.