【发布时间】:2020-12-28 10:20:40
【问题描述】:
我有这个代码:
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState(false);
const [loading, setLoading] = useState(false);
const [success, setSuccess] = useState(false);
const onSubmitHandler = (event) => {
event.preventDefault();
setLoading(true);
axios({
method: 'post',
url: `${process.env.REACT_APP_API_URL}users/auth/sign_in`,
data: { email, password },
headers: { 'content-type': 'application/json' },
})
.then(function (response) {
setSuccess(true);
console.log(response, ' sucesso');
const authData = {
accessToken: response.headers['access-token'],
client: response.headers.client,
uid: response.headers.uid,
};
localStorage.setItem('authData', JSON.stringify(authData));
})
.catch(function (error) {
setLoading(false);
setError(true);
console.log(error, 'error');
});
};
if(success) return <Redirect to="/" />
这是一个登录页面,当用户按下登录按钮时,该功能将被执行。它工作得很好,但我在重定向到主页时遇到了一些麻烦。
我添加了一个success const 作为useState 并且每次请求成功时,它应该使用setSuccess(true) 将success 设置为true,并使用react-router-dom 将用户重定向到/,但它不管用。状态依旧为假。我做错了什么?
我也尝试过像这样使用useEffect:
const returnFunc = () => <Redirect to="/" />;
useEffect(() => {
if (success) {
returnFunc();
}
}, [success, loading]);
【问题讨论】:
标签: javascript reactjs react-router-dom