在 sweetalert2 中显示来自 preConfirm 的错误消息

Show error message from preConfirm in sweetalert2

我正在使用 sweetalert2sweetalert2-react-content。我的 inputValidator 工作正常,它向用户显示错误。在我有 AJAX 请求的 preConfirm 中如何做同样的事情?

    MySwal.fire({
        title: 'title',
        input: 'text',
        html: this.renderInfoText(),
        showLoaderOnConfirm: true,
        inputValidator: (value) => {
            return new Promise((resolve) => {
              if (this.validate(value)) { 
                resolve()
              } else {
                resolve('check formatting...')
              }
            })
        },            
        preConfirm: (pno) => {
            return axios.post('/some/route', { pno })
                .then(response => { 
                    // ...
                })
                .catch(error => {
                    // show an error message to the user from here?
                });
        }
    }) 

here他们在一些例子中使用了fetch,尝试使用它

MySwal.fire({
        title: 'title',
        input: 'text',
        html: this.renderInfoText(),
        showLoaderOnConfirm: true,
        inputValidator: (value) => {
            return new Promise((resolve) => {
              if (this.validate(value)) { 
                resolve()
              } else {
                resolve('check formatting...')
              }
            })
        },            
        preConfirm: (pno) => {
            return fetch('/some/route', {
                method: 'POST',
                body: JSON.stringify(pno),
                headers: {
                'Content-Type': 'application/json'
            })
                .then(response => { 
                    // ...
                })
                .catch(error => {
                    // show an error message to the user from here?
                });
        }
    }) 

这实际上记录在AJAX request example下的examples中。这是我的解决方案:

MySwal.fire({
    title: 'title',
    input: 'text',
    html: this.renderInfoText(),
    showLoaderOnConfirm: true,
    inputValidator: (value) => {
        return new Promise((resolve) => {
          if (this.validate(value)) { 
            resolve()
          } else {
            resolve('check formatting...')
          }
        })
    },            
    preConfirm: (pno) => {
        return axios.post('/some/route', { pno })
            .then(response => { 
                // ...
            })
            .catch(error => {
                if (error.response.status === 404) {
                    MySwal.showValidationMessage(error.response.data.message)                        
                }                        
            });
    }
})