отправить thunk вернуться к компоненту - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь передать ответ отправленной функции обратно в код моего компонента.Я получаю подписанный запрос от моего бэкэнда, затем загружаю файл из моего компонента.

мой код компонента здесь получает подпись S3 от моего бэкэнда для загрузки файла

handleSubmitClick = async () => {
        if (this.state.name){
            let newFile = {
        filename: this.state.name,
        filetype: this.state.media.type,
            }
            this.props.signS3(newFile.filename, newFile.filetype)
                .then( res => console.log('NO RESPONSE', res))

            this.handleCloseClick();

        } else {
            this.setState({ inputError: true });
        }
  }

я получаю signS3 отmapdispatchtoprops

const mapDispatchToProps = dispatch => {
  return {
        handleCancelClick() {
            dispatch(openAttachAssetModal(false));
        },
        signS3(filename, filetype) {
            dispatch(signS3(filename, filetype));
        }
  }
}

Он запускает мою мутацию

export function signS3(filename, filetype) {
  return function thunk(dispatch) {
    const client = ApolloClient();
    return client.mutate({
      variables: { filename, filetype },
      mutation: gql`
        mutation signS3($filename: String!, $filetype: String!){
          signS3(input: {
            filename: $filename
            filetype: $filetype
          }) {
            signedRequest
            url
          }
        }
      `
    })
    .then(response => {
        return response
    })
  }
}

за исключением того, что я не получил ответ ...

1 Ответ

1 голос
/ 13 мая 2019

В mapDispatchToProps вы должны вернуть то, что отправляете (в данном случае обещание) в signS3, иначе значение будет неопределенным.

// ...
signS3(filename, filetype) {
    return dispatch(signS3(filename, filetype));
}
...