我在条形图中得到了一个错误"未定义的不可迭代"!

我从API得到的回应是

{
  "saleCharts": [
    {
      "priceSum": 0,
      "categoryName": "string"
    }
  ],
  "statusCharts": [
    {
      "qtySum": 0,
      "status": "string"
    }
  ]
}

我在Reaction中编写的代码是:

function Dashboard({ notifyData }) {

    const [orderData, setOrderData] = useState([]);
    const [dashboardData, setDashboardData] = useState([]);
    const [newOrderCount, setNewOrderCount] = useState(0);

    useEffect(() => {

        getNewOrder();
    }, [notifyData]);

    var getNewOrder = function () {
        let orderResp = [];
        axios.get(GetNewOrdersUrl + '/2').then(response => {
            orderResp = response.data;
        })
            .then(() =>
                axios.get(OrderDashboardUrl).then(response => {
                    setOrderData(orderResp.orderList);
                    setNewOrderCount(orderResp.count);
                    setDashboardData(response.data.saleCharts);

                }))
    };
}
return (
    <>
        <BarChart
            xAxis={[
                {
                    id: 'barCategories',
                    data: dashboardData.map(item => item.categoryName),
                    scaleType: 'band',
                },
            ]}
            series={[
                {
                    data: dashboardData.map(item => item.priceSum),
                },
            ]}
            colors={['#d75b47']}
            width={1000}
            height={350}
        />
    </>
)

请告诉我为什么会有这样的问题.我所了解的是,我的条形图是先绘制后,请国家提供解决方案.

推荐答案

该问题与BarChart组件的seriesprops 有关.它需要描述数据的seriesprops 才能呈现.seriesprops 得到一个数组,应该包括数据对象.所有数据对象都不应该有任何未定义的值.请参阅:BarChart Documentation

因此,可以应用两种解决方案来防止此问题.

  1. 将默认状态设置为dashboardData状态:
const [dashboardData, setDashboardData] = useState([ { priceSum: 0 } ]);
  1. 仅当dashboardData状态具有值时才渲染BarChart组件.因此,它不会在第一次渲染中渲染,因为dashboardData没有长度:
return (
   !!dashboardData.length && (
      <BarChart ... />
   )
);

这里有DEMO LINK个,可以方便地测试和复习.

希望,它对任何需要它的人都是有帮助的,也是明确的.

Reactjs相关问答推荐

Reaction Native:在初始获取后,Reducer变为未定义

CreateBrowserRouter将props 传递给父组件以验证权限

try 在Dockerfile中使用AWS CLI将React构建工件上传到S3时出错

Reaction Axios多部分/表单-数据数组不工作

如何处理具有REACTION-REDUX状态的Nextjs路由警卫

如何删除 bootstrap 手风琴上的边框

使用 MUI 菜单时添加新 html 元素时布局意外滚动跳转

Javascript - 正则表达式不适用于 MAC OS - 编码?

React useContext 的未定义返回值

获取 不能显示为 的后代.错误,但不太确定如何构建我的代码以避免此警告

为什么在 React 的 useEffect 中使用 onAuthStateChanged ?

useRef 不关注模态

onChange in useEffect 的最佳实践

如何在 ReactJS 中提交后删除 URL 中的查询参数

如何将值从下拉列表传递到 select 上的输入?响应式JS

谁能根据经验提供有关 useEffect 挂钩的更多信息

React Router 6.4CreateBrowserRouter子元素不显示

如何定制 React 热 toastr ?

如何根据react 中的 map 功能一次只打开一个弹出窗口?

useEffect 仅在跟随链接后有效,不适用于直接链接