LoginSignup
1
0

More than 3 years have passed since last update.

ページ遷移で、真っ白な画面が表示された

Last updated at Posted at 2020-01-21

事象

Reactで作ったWebページをスマホで確認していたところ、とあるページ遷移で、真っ白な画面が表示された。
「ホワイトアウト」と呼ばれる現象。

処理内容

「componentDidMount」のタイミングで、Fetch APIを使ってデータ取得。
タイムアウト時間を過ぎたら、fetch処理をキャンセルさせようとした。

コード

fetch.js
// after render
componentDidMount(){

    const controller = new AbortController();

    const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
    // 2秒後にfetchキャンセル
    wait(2000).then(() => {
        controller.abort();
    });

    fetch('https://hogehoge.com/send', {
        mode: 'cors',
        method: 'POST',
        signal: controller.signal,  // controllerが持つsignalをfetchに渡す
        header: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(JSONdata),
    }).then((data) => {
        // 応答が得られた場合の処理
    }).catch((error) => {
        // fetchキャンセルの場合、ここに入る
        // errorはundefined
    });
}

どこに問題があったか

「AbortController」をサポートしていないバージョンの「Chrome for Android」による読み込み。
この時の「Chrome for Android」のバージョンは「55」。
Chromeでの「AbortController」サポートは「66」以降になる。
https://developer.mozilla.org/en-US/docs/Web/API/AbortController

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0