Реакция и редукция useEffect на функцию asyn c с отправкой - PullRequest
0 голосов
/ 22 марта 2020

Я получаю сообщение об ошибке в консоли, когда запускаю свой код.

uncaught TypeError: func.apply is not a function
    at HTMLUnknownElement.callCallback (react-dom.development.js:188)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:237)
    at invokeGuardedCallback (react-dom.development.js:292)
    at safelyCallDestroy (react-dom.development.js:19650)
    at react-dom.development.js:20123
    at unstable_runWithPriority (scheduler.development.js:653)
    at runWithPriority$1 (react-dom.development.js:11061)
    at commitUnmount (react-dom.development.js:20116)
    at unmountHostComponents (react-dom.development.js:20497)
    at commitDeletion (react-dom.development.js:20533)
    at commitMutationEffects (react-dom.development.js:22813)
    at HTMLUnknownElement.callCallback (react-dom.development.js:188)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:237)
    at invokeGuardedCallback (react-dom.development.js:292)
    at commitRootImpl (react-dom.development.js:22540)
    at unstable_runWithPriority (scheduler.development.js:653)
    at runWithPriority$1 (react-dom.development.js:11061)
    at commitRoot (react-dom.development.js:22412)
    at finishSyncRender (react-dom.development.js:21838)
    at performSyncWorkOnRoot (react-dom.development.js:21824)
    at react-dom.development.js:11111
    at unstable_runWithPriority (scheduler.development.js:653)
    at runWithPriority$1 (react-dom.development.js:11061)
    at flushSyncCallbackQueueImpl (react-dom.development.js:11106)
    at flushSyncCallbackQueue (react-dom.development.js:11094)
    at discreteUpdates$1 (react-dom.development.js:21924)
    at discreteUpdates (react-dom.development.js:1071)
    at dispatchDiscreteEvent (react-dom.development.js:4168)
callCallback @ react-dom.development.js:188
invokeGuardedCallbackDev @ react-dom.development.js:237
invokeGuardedCallback @ react-dom.development.js:292
safelyCallDestroy @ react-dom.development.js:19650
(anonymous) @ react-dom.development.js:20123
unstable_runWithPriority @ scheduler.development.js:653
runWithPriority$1 @ react-dom.development.js:11061
commitUnmount @ react-dom.development.js:20116
unmountHostComponents @ react-dom.development.js:20497
commitDeletion @ react-dom.development.js:20533
commitMutationEffects @ react-dom.development.js:22813
callCallback @ react-dom.development.js:188
invokeGuardedCallbackDev @ react-dom.development.js:237
invokeGuardedCallback @ react-dom.development.js:292
commitRootImpl @ react-dom.development.js:22540
unstable_runWithPriority @ scheduler.development.js:653
runWithPriority$1 @ react-dom.development.js:11061
commitRoot @ react-dom.development.js:22412
finishSyncRender @ react-dom.development.js:21838
performSyncWorkOnRoot @ react-dom.development.js:21824
(anonymous) @ react-dom.development.js:11111
unstable_runWithPriority @ scheduler.development.js:653
runWithPriority$1 @ react-dom.development.js:11061
flushSyncCallbackQueueImpl @ react-dom.development.js:11106
flushSyncCallbackQueue @ react-dom.development.js:11094
discreteUpdates$1 @ react-dom.development.js:21924
discreteUpdates @ react-dom.development.js:1071
dispatchDiscreteEvent @ react-dom.development.js:4168

Когда я нажимаю определенные кнопки, которые перенаправляют на клиентскую сторону, клиентская сторона переходит к этому пустому экрану, и я должен обновить его sh. Когда я обновляю sh приложение, оно работает как требуется и отправляется в правильное место с правильными состояниями (ведет себя как следует). Когда я погуглил эту ошибку, я обнаружил, что она вызвана асин c функцией, используемой в хуке useEffect. Тем не менее, предложенные исправления будут работать, так как я использую диспетчеризацию для этой функции asyn c и не знаю, как обойти это.

здесь есть функция

export const getCurrentProfile = () => async dispatch => {
  try {
    const res = await axios.get("/api/profile/me");

    dispatch({ type: GET_PROFILE, payload: res.data });
  } catch (err) {
    dispatch({
      type: PROFILE_ERROR,
      payload: { msg: err.response.statusText, status: err.response.status }
    });
  }
};

здесь есть фрагмент кода, который я использую useEffect в


import { connect } from "react-redux";
import { getCurrentProfile } from "../../actions/profile";

...

const Dashboard = ({
  getCurrentProfile,
  auth: { user },
  profile: { profile, loading }
}) => {
  useEffect(() => {
    getCurrentProfile();
  }, []);

...


export default connect(mapStateToProps, { getCurrentProfile })(Dashboard);
...