axiosInstance.get无法显示数据

axiosInstance.get can't display data

我想显示 axiosInstance.get 的回复。我收到回复,但未显示。你能帮我找到解决办法吗?

export default function Tour() {
    const { slug } = useParams();
    const classes = useStyles();

    const [data, setData] = useState({ tours: [] });

    useEffect(() => {
        axiosInstance.get('tours/?slug='+slug).then((res) => {
            const singleTour = res.data
            setData({ tours: singleTour });
            console.log(res.data);
        });
    }, [setData]);

    return (
        <Container component="main" maxWidth="md">
            <CssBaseline />
            <div className={classes.paper}></div>
            <div className={classes.heroContent}>
                <Container maxWidth="sm">
                    <Typography
                        component="h1"
                        variant="h2"
                        align="center"
                        color="textPrimary"
                        gutterBottom
                    >
                        {data.tours.title}
                    </Typography>
                    <Typography
                        variant="h5"
                        align="center"
                        color="textSecondary"
                        paragraph
                    >
                        {data.tours.description}
                    </Typography>
                </Container>
            </div>
        </Container>
    );
}

网络没有错误,但前端没有任何显示

console.log(res.data)

的输出
0:
author: 1
description: "yoga yoga yoga yoga yoga"
end_date: "2022-01-15T14:25:31Z"
id: 1
reg_end_date: "2022-01-15T14:25:36Z"
reg_start_date: "2022-01-15T14:25:33Z"
slug: "tour"
start_date: "2022-01-15T14:25:30Z"
status: 2
title: "new yoga tour"

如果响应始终是长度为 1 的数组,那么我不会费心将它作为数组存储在状态中。将它存储为一个对象,它匹配它在渲染中的访问方式并保持状态不变。

export default function Tour() {
  ...

  const [data, setData] = useState({ tours: {} }); // <-- use object

  useEffect(() => {
    axiosInstance.get('tours/?slug='+slug).then((res) => {
      const [singleTour] = res.data; // <-- array destructuring assignment
      setData({ tours: singleTour });
      console.log(res.data);
    });
  }, [setData]);

  return (
    <Container component="main" maxWidth="md">
      ...
        <Container maxWidth="sm">
          <Typography ... >
            {data.tours.title}
          </Typography>
          <Typography ... >
            {data.tours.description}
          </Typography>
        </Container>
      </div>
    </Container>
  );
}