Reactjs Chartjs使用Axios响应填充数据

Reactjs Chartjs使用Axios响应填充数据,reactjs,chart.js,Reactjs,Chart.js,我正在尝试根据用户选择的数据集(即过去24小时、过去一周等)填充图表上的数据。我正在以状态保存数据和标签。标签会根据选定的时间范围进行更新,但不会填充任何数据。我已将数据(this.state.data.datasets[0].data[0])记录在控制台中,并且它是正确的数据 这是我的密码: class ChartDemo extends Component { state = { target: 20, timeFrame: "past-hours",

我正在尝试根据用户选择的数据集(即过去24小时、过去一周等)填充图表上的数据。我正在以状态保存数据和标签。标签会根据选定的时间范围进行更新,但不会填充任何数据。我已将数据(this.state.data.datasets[0].data[0])记录在控制台中,并且它是正确的数据

这是我的密码:

class ChartDemo extends Component {
state = {
        target: 20,
        timeFrame: "past-hours",
        totalSales: [],
        data: {
            labels: [],
            datasets: [
                {
                    label: "",
                    backgroundColor: "",
                    // data results
                    data: []
                }
            ]
        },
        chartIsLoaded: false,
    }
getData = (start, end) => {
        API.getData(start, end)
            .then(res =>
                this.setState(state => {
                    // if any sales have occured in selected time period
                    if (res.data[0] !== undefined) {
                        let total = res.data[0].profit.toFixed(2);
                        let totalString = total.toString();
                        const totalSales = state.totalSales.concat(totalString);
                        return {
                            totalSales
                        };
                    } else {
                        // set to zero if no sales
                        const noSale = "0.00";
                        const totalSales = state.totalSales.concat(noSale);
                        return {
                            totalSales
                        };
                    }
                })
            )
            .catch(error => console.log( error));
    }
UNSAFE_componentWillMount() {
        this.setTimeFrame();
    }
setTimeFrame() {
const day-one = 2019-08-01;
const day-two = 2019-08-02;
        const timeFrame = this.state.timeFrame;
        this.setState({ target: 20 });
        if (timeFrame === "past-hours") {
            this.getData(day-one, day-two);
            if (this.state.totalSales.length < 8) {
                this.setState({ target: 7, chartIsLoaded: true });
                setTimeout(
                    function () {
                        this.setState(prevState => ({
                            data: {
                                ...prevState.data,
                                labels: [
                                    timeset-one,
                                    timeset-two,
                                    timeset-three,
                                    timeset-four,
                                    timeset-five,
                                    timeset-six,
                                    timeset-seven,
                                    timeset-eight,
                                ],
                                datasets: [{
                                    ...prevState.data.datasets,
                                    label: "24-hour Profit in $",
                                    backgroundColor: "rgb(1,41,95)",
                                    data: [this.state.totalSales]
                                }]
                            }
                        }))
                    }.bind(this), 1000
                )
            }
        }
}
类ChartDemo扩展组件{
状态={
目标:20,
时间表:“过去的几个小时”,
总销售额:[],
数据:{
标签:[],
数据集:[
{
标签:“,
背景颜色:“,
//数据结果
数据:[]
}
]
},
chartisloated:false,
}
getData=(开始、结束)=>{
API.getData(开始、结束)
。然后(res=>
this.setState(state=>{
//如果在所选时间段内发生任何销售
if(res.data[0]!==未定义){
设total=res.data[0]。profit.toFixed(2);
设totalString=total.toString();
const totalSales=state.totalSales.concat(totalString);
返回{
总销售额
};
}否则{
//如果没有销售,则设置为零
const noSale=“0.00”;
const totalSales=state.totalSales.concat(noSale);
返回{
总销售额
};
}
})
)
.catch(错误=>console.log(错误));
}
不安全的_组件willmount(){
这是setTimeFrame();
}
setTimeFrame(){
施工第一天=2019-08-01;
施工第二天=2019-08-02;
const timeFrame=this.state.timeFrame;
this.setState({target:20});
如果(时间范围==“过去的小时”){
这个.getData(第一天,第二天);
if(this.state.totalSales.length<8){
this.setState({target:7,chartisloated:true});
设置超时(
函数(){
this.setState(prevState=>({
数据:{
…prevState.data,
标签:[
时间集1,
时间集2,
时间集3,
时间集4,
时间集5,
时间集6,
时间集7,
时间集8,
],
数据集:[{
…prevState.data.dataset,
标签:“以美元计的24小时利润”,
背景色:“rgb(1,41,95)”,
数据:[此.state.totalSales]
}]
}
}))
}.绑(这个),1000
)
}
}
}

我通过删除this.state.totalSales周围的[]来解决此问题。我基本上是将一个数组放入另一个数组。

我通过删除this.state.totalSales周围的[]来解决此问题。我基本上是将一个数组放入另一个数组