如何更改我的手柄更改并提交给减速器?

问题描述 投票:1回答:1

我一直在尝试将身份验证表单提交到化简版3天,并且ive搜索并阅读了我能找到的所有内容,并找到了有关更改句柄的部分答案,但无法弄清楚如何执行handle提交功能,ive看到其他人是如何做到的,但是没有一个与我的相似,请指导我如何找到解决方案,这是我在reducers之前的代码:

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 })
}

我不是在寻找解决方案,但是我已经厌倦了三天没有找到方法,我需要继续前进,请指导我

reactjs form-submit use-reducer
1个回答
0
投票
感谢@Tim Ermilov
© www.soinside.com 2019 - 2024. All rights reserved.