#javascript #reactjs #typescript #react-native #fetch
#javascript #reactjs #typescript #react-native #выборка
Вопрос:
Я пытаюсь создать систему входа в систему с использованием состояний и выборки, чтобы пользователь мог получить свой действительный токен, а затем поместить его в хранилище с асинхронным хранилищем. Я все еще нахожусь на этапе взаимодействия с API (expressjs). Все работает на тот момент, когда я ввожу адрес электронной почты и пароль, я получаю токен в json, но у меня есть ошибка типа предупреждения, которая сообщает мне:
[Отклонение необработанного обещания: ошибка типа: f не является функцией. (В ‘f()’, ‘f’ не определено)]
На данный момент мой код очень прост (я понятия не имею, откуда он взялся):
const onSubmit = () => {
setLoading(true)
fetch('http://192.168.1.36:3000/api/users/login', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: email,
password: password
})
})
.then((response) => response.json())
.then((res) => console.log(res))
.catch((err) => console.log(err))
.finally(setLoading(false));
}
Я не знаю, является ли синтаксис, который я использую с выборкой, «хорошим» и «оптимизированным» для системы входа в систему, но я надеюсь, что я был достаточно ясен в своем объяснении.
Танки
Ответ №1:
Я думаю, это связано с вашим предложением finally:
.finally(setLoading(false));
Функции finally должна быть передана сама функция. Два способа сделать это:
.finally(() => setLoading(false));
.finally(setLoading.bind(undefined, false));