Я использую acios для извлечения данных из API и обновления значения моих хуков. Начальным значением является пустой объект. Я подумал, что если я использую «await» перед запросом axios, функция не будет запущена до получения запроса и установки новых значений.
К сожалению, это не всегда происходит, и иногда «значения» остаются пустымидаже после того, как должен был ожидаться запрос get axios.
Как мне убедиться, что значения os mever "{}" в коде? Я думал, что «ждать» должен исправить это, но это не так.
import { Grid, Hidden } from '@material-ui/core';
import Link from '@material-ui/core/Link';
import ProjectInformation from '../../projects/components/ProjectInformation';
import axios from 'axios';
const style = {
textAlign: 'left',
float: 'right',
position: 'fixed',
};
export default function ProjectPage(props) {
const propsId = props.match.params.id;
const [values, setValues] = useState({});
useEffect(() => {
getProjectById();
}, []);
const getProjectById = async () => {
const { data } = await axios.get(`http://localhost:9000/projects/${propsId}`);
setValues(data);
};
console.log('values are', values);
return (
<Grid container spacing={3}>
<Hidden smDown>
<Grid item sm={2}>
<div style={style}>
<Link href="#anchor1">Project Information</Link>
<br />
<Link href="#anchor2">Fieldwork Information</Link>
<br />
<Link href="#anchor3">Personell & Institutions</Link>
<br />
<Link href="#anchor4">Project Updates</Link>
<br />
<Link href="#anchor5">Datasets</Link>
<br />
<Link href="#anchor6">Publications</Link>
</div>
</Grid>
</Hidden>
<Grid item xs={12} sm={10} style={{ borderLeft: '1px solid #dddddd' }}>
<Grid item>
<div id="anchor1">
<ProjectInformation props={values} />
</div>
</Grid>
<Grid item>
<div id="anchor2">
<p>test</p>
</div>
</Grid>
<Grid item>
<div id="anchor3">
<p>test</p>
</div>
</Grid>
<Grid item>
<div id="anchor4">
<p>test</p>
</div>
</Grid>
<Grid item>
<div id="anchor5">
<p>test</p>
</div>
</Grid>
<Grid item>
<div id="anchor6">
<p>test</p>
</div>
</Grid>
</Grid>
</Grid>
);
}