Можно ли взывать useEffect() при каждом вызове dispatch?
Я пробовал использовать такой код в компоненте:
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()?
Источник: Stack Overflow на русском