Я создаю веб-страницу с помощью React, используя useEffect
hook api
но когда я открываю страницу в веб-представлении приложения для Android моего клиента, между первым вызовом рендеринга и вызовом useEffect всегда остается больше 5000 мс.
вот мой код:
import React, { useEffect, useState, useRef } from 'react';
import axios from 'axios';
const api = {
ins: axios.create({
baseURL: 'https://new.h5no1.com/apg-great-china-3/api'
})
};
function App() {
const [data, setData] = useState();
const t = useRef(Date.now());
useEffect(() => {
console.log(Date.now() - t.current); // 5000+, useLayoutEffect log 30~50 only
api.ins
.post('/user/is_on_list', {
openid: 'xxx',
openToken: 'xxx'
})
.then(res => {
setData(JSON.stringify(res.data))
});
}, []);
return <div className="App">{data ? data : 'loading'}</div>;
}
export default App;
и когда я перехожу на использование useLayoutEffect
, он работает нормально, проблема в том, что я не знаю, почему использование useEffect
может вызвать проблему при использовании его только для извлечения данных из веб-API?
строка UA, которую я получаю из веб-обзора приложения
Mozilla/5.0 (Linux; Android 9; MI 8 Lite Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/72.0.3626.121 Mobile Safari/537.36 PARS/50601
Я тестировал на других устройствах Android с приложением, они все вели себя одинаково.
и использование componentDidMount
тоже отлично работает.