У меня проблема с Redux, и я не могу найти, что происходит не так. Моя идея: я хочу отобразить сообщение, зависит от того, существует ли пользователь в моей базе данных. Я использовал избыточную реакцию, но это действительно сбивает меня с толку. 1 — моё действие

import { SET_MESSAGE_SUBMIT} from "./types"; export const msgRegisterSuccess = () ={amp}gt; { return { type: SET_MESSAGE_SUBMIT }; }; 

2 — Мой редуктор

 import {SET_MESSAGE_SUBMIT} from "../actions/types"; export default function (state=false,action){ switch(action.type){ case SET_MESSAGE_SUBMIT: return !state.submitToggle; default: return state; } }; 

3 — Мой контейнер

 import React, { useState} from "react"; import PropTypes from "prop-types"; import { connect } from "react-redux"; import { registerUser } from "../../actions/registerActions"; import Validate from "../../components/form/Validate"; import Contact from "../../components/auth/Contact"; const ContactPage = ({ registerUser}) ={amp}gt; { const [user, setUser] = useState({ user_name: "", email: "", message: "", errors: {} }); const handleChange = e ={amp}gt; { setUser({ ...user, [e.target.name]: e.target.value }); }; const handleBlur = e ={amp}gt; { const { name, value } = e.target; const err = { ...user.errors, ...Validate(name, value).errors }; setUser({ ...user, errors: { ...err } }); }; const handleSubmit = e ={amp}gt; { e.preventDefault(); const { user_name, email, message} = user; registerUser({ user_name, email, message}); }; return ( {amp}lt;div{amp}gt; {amp}lt;Contact user={{ ...user}} onBlur={handleBlur} onChange={handleChange} onSubmit={handleSubmit} /{amp}gt; {amp}lt;/div{amp}gt; ); }; ContactPage.propTypes = { registerUser: PropTypes.func.isRequired, toggle: PropTypes.object.isRequired, errors: PropTypes.object.isRequired }; const mapStateToProps = state ={amp}gt; ({ errors: state.errors, toggle: state.toggle }); export default connect( mapStateToProps, { registerUser } )(ContactPage); 

4 — где я хотел бы отправить свое действие «SET_SUBMIT_MESSAGE», если пользовательские данные сохранены в моей базе данных. Я знаю, что этот конкретный фрагмент кода неправильный :(. Я пробовал так много комбинаций, я устал!

 import axios from "axios"; import {SET_MESSAGE_SUBMIT} from "../actions/successMsgActions"; export const registerUser = (userData) ={amp}gt; dispatch ={amp}gt; { axios .post("/api/users/signup",userData) // .then(dispatch(SET_MESSAGE_SUBMIT)) .catch(err ={amp}gt; { dispatch(setErrors(err.response.data)); // dispatch(SET_MESSAGE_SUBMIT); }); }; 

Может кто-нибудь, пожалуйста, помогите мне?

Nad»

Ngaya

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,

Я вижу некоторое несоответствие в состоянии

Вот оно булево

export default function (state=false,action){

здесь вы возвращаете состояние или логическое

  switch(action.type){ case SET_MESSAGE_SUBMIT: return !state.submitToggle; default: return state; } 

но в компоненте вы ожидаете объект

 const mapStateToProps = state ={amp}gt; ({ errors: state.errors, toggle: state.toggle }); 

Я не пробовал весь код самостоятельно, но другие мысли, кажется, в порядке.