Я пытался перевести свою форму проверки подлинности в редуктор в течение 3 дней, и я искал и читал все, что мог найти, и нашел частичный ответ для изменения дескриптора, но не могу понять, как сделать функцию отправки дескриптора, Я видел, как другие сделали это, но ни один из них не похож на мой, пожалуйста, подскажите мне, как найти мое решение, вот мой код до редукторов:
import React, {createContext, useState} from 'react';
import axios from "axios";
export const SignInContext = createContext();
const SignInContextProvider = (props) => {
const [formData, setFormData] = useState({
email: '',
password: '',
error: '',
success: false
})
const {email, password, error, success} = formData;
const clickSubmit = async event => {
event.preventDefault()
setFormData({...formData})
await axios.interceptors.response.use((response) => {
// do something with the response data
// console.log('Response was received');
return response;
}, error => {
// handle the response error
// console.log(error.response.data.message)
setFormData({...formData, error: error.response.data.message, success: false})
return Promise.reject(error.response.data.message);
});
await axios({
method: 'post',
url: 'http://localhost:5001/api/user/signin',
data: {email, password}
})
.then((response) => {
console.log(response);
if (response.data.status===200) {
setFormData({...formData, success: response.data.message});
localStorage.setItem('myData', response.data.token);
localStorage.setItem('type', response.data.type);
}
else {
setFormData({...formData, error: response.data.message, success: false});
}
},
(error) => (
console.log(error),
setFormData({...formData, error: error, success: false})
));
}
const handleChange = name => event => {
setFormData({...formData, error: false, [name]: event.target.value})
};
const showError = () => (
<div>
<div className="alert alert-danger text-center" style={{display: error ? '' : 'none'}}>
{error}
</div>
</div>
);
const showSuccess = () => (
<div className="alert alert-success text-center" style={{display: formData.success ? '' : 'none'}}>
{success}
</div>
);
return (
<SignInContext.Provider value={{ ...formData, clickSubmit, handleChange, showError, showSuccess }}>
{props.children}
</SignInContext.Provider>
);
};
export default SignInContextProvider;
это редуктор изменения ручки:
export const signInReducer = (state, {field, value}) => {
return [...state, {
[field]: value
}]
}
вот мой метод смены рукоятки для редуктора:
const initialState = {
email: '',
password: '',
error: '',
success: false
};
const {email, password, error, success} = signInData;
const handleChange = e => {
dispatch({ field: e.target.name, value: e.target.value })
}
Я не ищу решения для раздачи, но я устал от поиска пути в течение 3 дней, мне нужно идите дальше, пожалуйста, ведите меня