I have searched through possible solutions quite a bit and can't find any mistake that applies in this case. The await used inside useEffect just doesn't wait.
App.js: the data state is set only through default value and nowhere else
const [data, setData] = useState( new Data() ); useEffect(()=>{ async function loadData() { await data.load(); } loadData().then(()=>{ console.log('Loaded!') }); }, [data])
data.js is ES6 class that has async method load():
async load() { let test = await fetch("https://raw.githubusercontent.com/json-iterator/test-data/master/large-file.json"); let testJson = await test.json(); }
Whatever I try, the .then() is triggered within a split second, while opening the same json file in browser takes a long time.
Things I tried:
- Using null as default state and instead initializing on mount
useEffect( ()=>{setData( new Data() )}, [] )
(while adding check at top of data's useEffect to return if data is null) - IIFE function inside data's useEffect using just await instead of then
- There are no fetching related warnings or errors in console, still I tried with just setTimeout instead
- Few other probably pointless things.. I can't figure out what is wrong here.
没有评论:
发表评论