asd*_*sds 4 reactjs react-query
import React, {useState, useEffect, Component} from 'react';
import {Grid, Paper, TextField} from '@material-ui/core'
import DataManager from './../data_manager/data_manager'
const dataManager = new DataManager();
const Tile = (props)=>{
// Initializing State Variables
const [state, setState] = useState({
data : {}
})
const { status, data, error, isFetching } = useQuery("data",async()=>{
const res = await fetch("localhost:8000");
return res.json()
}
if(status==="success"){
setState({data})
}else{
return(<p>Doing</p>)
}
}
Run Code Online (Sandbox Code Playgroud)
此代码会导致无限循环,渲染不断循环进行。
我认为这是因为setState导致useQuery再次执行再次设置状态等等。
任何帮助表示赞赏。我想将从 useQuery 获得的数据存储在状态变量中。
TIA。
您可能想使用useEffect现在在每个渲染上获取的内容:
const Tile = (props) => {
const [state, setState] = useState({
data: {},
});
const { status, data, error, isFetching } = useQuery("data", async () => {
const res = await fetch("localhost:8000");
return res.json();
});
useEffect(() => {
if (status === 'success') {
setState({ data });
}
}, [status, data]);
return status === 'success' ? (
<div>Success and use data</div>
) : (
<div>Loading</div>
);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20319 次 |
| 最近记录: |