为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用react hooks调用reducer中的重置类型

如何使用react hooks调用reducer中的重置类型

慕姐4208626 2023-08-05 20:51:35
事件.jsimport React, { useEffect, useState } from 'react';import { useDispatch, useSelector } from 'react-redux';import { Link, useHistory } from 'react-router-dom';import { addEvent } from '../actions/event';const AddEvent = () => {let history = useHistory();const [event, setEvent] = useState();const createEvent = useSelector(state => {    console.log(state)    return (        state.addEvent    )});const { loading, newEvent, success, error } = createEvent;const handleChange = e => {    setEvent({ ...event, [e.target.name]: e.target.value });};const dispatch = useDispatch();useEffect(() => {    if(success) {        history.push('/')  =========>>>>>>>> It work once fine but again when I tries to open add Event it automatically redirects to '/' as it is not getting reset after redirecting    };},[success]);const submitHandler = (e) => {    e.preventDefault();    dispatch(addEvent(event));};return (    <div>        { loading ? (            <div> Loading... </div>        ) : error ? (            <div> {error} </div>        ) : (                    <form onSubmit={e => submitHandler(e)}>                        <div className="form-group">                            <label htmlFor="name" className='mt-2'>Name</label>                            <input type="text" className="form-control" id="name" name="name" onChange={e => handleChange(e)} />                        </div>                        <div className="form-group">                            <label htmlFor="description">Description</label>我正在学习如何使用 React Redux,所以我尝试 CRUD 工作流程工作正常,但在成功添加事件后,我希望它重定向到主页,它工作正常,但由于 React-Redux 保持其状态,因此它再次成功重定向到主页设置为 true 所以我创建了另一个重置类型以将 success 设置为 false 但不知道如何在成功添加数据后每次调用
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

动作.js


const addEvent = (newEvent) => async (dispatch) => {

dispatch({ type: EVENT_ADD_REQUEST, payload:newEvent });

 try {

    const { data } = await axios.post(`http://localhost:3002/event`, newEvent);

    dispatch({ type: EVENT_ADD_SUCCESS, payload: data });

    dispatch({ type: EVENT_RESET });  ===>>> adding here it works

 }

 catch (error) {

    dispatch({ type: EVENT_ADD_FAIL, payload:error.message });

 }

};


查看完整回答
反对 回复 2023-08-05
  • 1 回答
  • 0 关注
  • 61 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信