Можно ли взывать useEffect() при каждом вызове dispatch?

Рейтинг: 0Ответов: 0Опубликовано: 06.07.2023

Я пробовал использовать такой код в компоненте:

const {isLoaded, officers } = useSelector(state => state.officers)

const dispatch = useDispatch()
useEffect(() => {
   console.log('dispatch')
},[dispatch])
    
const deleteOfficer = (id) => {
   dispatch(deleteOfficer(id));
}

При вызове deleteOfficer идет обращение к функции, которая возращает dispatch:

export const deleteOfficer = (id) => {
    return function(dispatch) {
        axios.delete(url + id, headers)
            .then((response) => {
                if (response.status === 200) {
                    dispatch(setMessage({
                        success: true,
                        text: `Сотрудник успешно удален`
                    }))
                }
            })
            .catch((error) => {
                console.log("error: ", error)
                dispatch(setMessage({
                    success: false,
                    text: `${error.response.data.message}`
                }))
            })
    }
}

Изменение state через setMessage() никак не отслеживается в компоненте. Можно ли как-то при вызове dispatch(setMessage()) делать вызов useEffect()?

Ответы

Ответов пока нет.