Проблема отмены Axios для метода записи - PullRequest
0 голосов
/ 21 октября 2018

Я создаю приложение Reactjs, используя Axios для обработки запроса данных, случай такой:Существует форма, которую будут заполнять пользователи, и когда пользователи нажимают кнопку отправки, чтобы отправить форму, в конечную точку API поступает запрос Axios на передачу данных, но во время этого запроса, если пользователи пытаются покинуть страницу(либо нажмите кнопку «Назад», перенаправьте или обновите страницу), появится предупреждение, предупреждающее пользователей, если данные формы отправляются, но если пользователи все еще хотят покинуть страницу, запрос Axios будет прерван (отменен)..

Это схема моего кода:

    const source = axios.CancelToken.source();
    axios.post(URL, data, {
        headers: {...},
        onUploadProgress: (progress) => {....},
        cancelToken: source.token,
    })
    .then((res) => {
        console.log('form submitted')
    })
    .catch((thrown) => {
        if(axios.isCancel(thrown)){
            console.log('cancelled')
        } else {
            // error handling
        }
    })

    window.onpopstate = () => {
        if(window.confirm('Are You Sure to.....') {
            source.cancel();
        }
    }

И проблема в том, что когда window.confirm возвращает true и метод отмены запускается, сообщение cancelled печатается вконсоль, которую я рассматриваю как отмену успеха, но когда я открываю свою базу данных, я обнаруживаю, что только что отмененные данные уже есть, и я хочу, чтобы данные не сохранялись, потому что запрос уже отменен,Обратите внимание, что сообщение form submitted никогда не отображается.Я знаю, что Axios является асинхронным, но я уверен, что отмена действительно успешна, как я уже говорил.

...