가져 오기가 완료되기 전에 리디렉션이 발생합니다.

Kertix

이전 페이지로 다시 리디렉션하는 데 문제가 거의 없습니다. 너무 빨리 발생합니다.

기본적으로 다음과 같은 기능 구성 요소가 있습니다.

export const CreateRecordingControls = ({ recording, handleCreateRecording }) => {
  const history = useHistory();

  const handleCreate = async () => {
    const promise = Promise.resolve(handleCreateRecording(recording));
    await Promise.all([promise]).then(function () {
      history.push('/home');
    });
  }

  return (
    <Fragment>
      <button onClick={() => handleCreate()}>Create</button>
    </Fragment>
  );
}

const mapDispatchToProps = dispatch => ({
  handleCreateRecording: recording => {
    dispatch(handleCreateRecording(recording));
  }
});

const CreateRecordingControlsView = withRouter(connect(null, mapDispatchToProps)(CreateRecordingControls));

export default CreateRecordingControlsView;

사용자가 "만들기"를 클릭하면 createRecording 작업이 호출됩니다.

export const handleCreateRecording = (recording) => {
  return dispatch => {
    dispatch(handleCreateRecordingBegin());
    fetch(`${config.get('api')}/api/recordings/create`, {
      method: 'PUT',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(recording, replacer)
    }).then(data => {
      dispatch(handleCreateRecordingSuccess(data));
    }).catch(error =>
      dispatch(handleCreateRecordingFailure(error))
    );
  }
}

감속기로 이동합니다.

export default (state = [], action) => {
  switch (action.type) {
    case 'CREATE_RECORDING_BEGIN':
      return {
        ...state,
        loading: true,
        error: null,
        finished: false
      }
    case 'CREATE_RECORDING_SUCCESS':
      return {
        data: action.payload,
        loading: false,
        finished: true
      }
    default:
      return state;
    }
  }

그러나이 경우에도 핸들 성공이 호출되기 전에 '/ home'경로의 구성 요소가 마운트된다는 것을 보여줍니다. 홈 구성 요소에는 방금 추가 된 녹음 목록이 포함되어 있습니다. 현재는 먼저 거기에 도착하는 것이 경주 인 것 같습니다. 지금까지 새로 만든 녹음이 목록에 있지만 여전히 잘못된 동작이라고 생각합니다.

리디렉션하기 전에 성공 사례가 완료되기를 기다리는 방법에 대한 아이디어가 있습니까?

FMCorz

dispatch함수는 약속을 반환하지 않으므로 아무것도 기다리지 않습니다. 으로 redux-thunk당신이 파견의 결과를 기다릴하려는 경우, 당신은 당신의 행동 작성자 이내에 수행해야합니다 당신을 파견하고 있습니다 곳 handleCreateRecordingSuccess.

대안은 상태 값을 관찰 finished하고 관심있는 값을 얻었을 때 기록으로 푸시하는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

페이지를 리디렉션하기 전에 새로 생성 된 레코드 ID 가져 오기

분류에서Dev

PostgreSQL : 완료되기 전에 dblink를 통해 쿼리의 PID 가져 오기

분류에서Dev

이벤트가 완료되기 전에 jQuery 애니메이션 완료가 실행됩니다.

분류에서Dev

Flask에서 postgresql 데이터베이스의 Pytest 분해가 테스트가 완료되기 전에 발생합니다.

분류에서Dev

CSS 가져 오기에 오류가 발생합니다.

분류에서Dev

zsh 완료 : 특정 디렉토리에서 파일 이름 가져 오기

분류에서Dev

iprocess가 완료되기 전에 대기가 계속됩니다.

분류에서Dev

소스 Observable이 완료되기 전에`merge` 연산자가 완료되는 이유는 무엇입니까?

분류에서Dev

새 로그가 생성되는 대신 회전 된 로그에서 로그 리디렉션이 발생합니다.

분류에서Dev

ajax 호출이 완료되기 전에 메소드가 실행 중입니다.

분류에서Dev

기존 파일에 "해당 파일 또는 디렉토리가 없습니다"오류가 발생합니까?

분류에서Dev

응답 처리가 완료되기 전 오류 페이지

분류에서Dev

까다로운 리디렉션에 대한 최종 리디렉션 URL 가져 오기

분류에서Dev

신청이 계속되기 전에 두 번째 프로세스가 완료되기를 기다리는 중

분류에서Dev

작업이 완료되기 전에 NodeJS 비동기가 완료 됨

분류에서Dev

Firebasequery가 완료되기 전에 Android 비동기 작업이 완료 됨

분류에서Dev

flask_mysqldb 가져 오기 MySQL에서 가져 오기 오류가 발생합니다. ImportError : flask_mysqldb라는 모듈이 없습니다.

분류에서Dev

pubspec.yaml에서 앱 이름을 변경하면 가져 오기시 오류가 발생합니다.

분류에서Dev

계속하기 전에 객체 생성자 내부의 메서드가 완료되기를 기다리는 중

분류에서Dev

Cordova + Android에서 내부 애플리케이션 디렉토리 가져 오기

분류에서Dev

반응 redux에서 리디렉션하기 전에 작업이 완료되기를 기다리는 방법은 무엇입니까?

분류에서Dev

동기화 된 메서드가 종료되기 전에 발생합니다.

분류에서Dev

함수가 종료되기 전에 eval을 통한 on.exit 호출이 발생합니다.

분류에서Dev

NodeJS는 기능이 완료되기 전에 응답합니다.

분류에서Dev

쿼리가 완료되기 전에 응답 보내기

분류에서Dev

실행이 완료되기 전에 메서드가 반환됩니까?

분류에서Dev

다음 기능이 시작되기 전에 기능의 모든 페이드가 완료 될 때까지 기다리십시오.

분류에서Dev

.htaccess *에서 완전한 URL 리디렉션이 가능합니까?

분류에서Dev

Await는 API 게시가 완료 될 때까지 기다리지 않고 동시에 발생합니다.

Related 관련 기사

  1. 1

    페이지를 리디렉션하기 전에 새로 생성 된 레코드 ID 가져 오기

  2. 2

    PostgreSQL : 완료되기 전에 dblink를 통해 쿼리의 PID 가져 오기

  3. 3

    이벤트가 완료되기 전에 jQuery 애니메이션 완료가 실행됩니다.

  4. 4

    Flask에서 postgresql 데이터베이스의 Pytest 분해가 테스트가 완료되기 전에 발생합니다.

  5. 5

    CSS 가져 오기에 오류가 발생합니다.

  6. 6

    zsh 완료 : 특정 디렉토리에서 파일 이름 가져 오기

  7. 7

    iprocess가 완료되기 전에 대기가 계속됩니다.

  8. 8

    소스 Observable이 완료되기 전에`merge` 연산자가 완료되는 이유는 무엇입니까?

  9. 9

    새 로그가 생성되는 대신 회전 된 로그에서 로그 리디렉션이 발생합니다.

  10. 10

    ajax 호출이 완료되기 전에 메소드가 실행 중입니다.

  11. 11

    기존 파일에 "해당 파일 또는 디렉토리가 없습니다"오류가 발생합니까?

  12. 12

    응답 처리가 완료되기 전 오류 페이지

  13. 13

    까다로운 리디렉션에 대한 최종 리디렉션 URL 가져 오기

  14. 14

    신청이 계속되기 전에 두 번째 프로세스가 완료되기를 기다리는 중

  15. 15

    작업이 완료되기 전에 NodeJS 비동기가 완료 됨

  16. 16

    Firebasequery가 완료되기 전에 Android 비동기 작업이 완료 됨

  17. 17

    flask_mysqldb 가져 오기 MySQL에서 가져 오기 오류가 발생합니다. ImportError : flask_mysqldb라는 모듈이 없습니다.

  18. 18

    pubspec.yaml에서 앱 이름을 변경하면 가져 오기시 오류가 발생합니다.

  19. 19

    계속하기 전에 객체 생성자 내부의 메서드가 완료되기를 기다리는 중

  20. 20

    Cordova + Android에서 내부 애플리케이션 디렉토리 가져 오기

  21. 21

    반응 redux에서 리디렉션하기 전에 작업이 완료되기를 기다리는 방법은 무엇입니까?

  22. 22

    동기화 된 메서드가 종료되기 전에 발생합니다.

  23. 23

    함수가 종료되기 전에 eval을 통한 on.exit 호출이 발생합니다.

  24. 24

    NodeJS는 기능이 완료되기 전에 응답합니다.

  25. 25

    쿼리가 완료되기 전에 응답 보내기

  26. 26

    실행이 완료되기 전에 메서드가 반환됩니까?

  27. 27

    다음 기능이 시작되기 전에 기능의 모든 페이드가 완료 될 때까지 기다리십시오.

  28. 28

    .htaccess *에서 완전한 URL 리디렉션이 가능합니까?

  29. 29

    Await는 API 게시가 완료 될 때까지 기다리지 않고 동시에 발생합니다.

뜨겁다태그

보관