【发布时间】:2022-10-15 03:02:13
【问题描述】:
我已经构建了一个使用 Flask 后端和 React 前端的 Web 应用程序,我对 React 很陌生,所以我的知识有限。我想将两个数据列表从后端传递到前端,然后使用 Chartjs 显示它们。
前端接收数据,显示图表但未填充数据。
显示的输出如下所示:
1,2,3,4,5,6
没有数据的图表
烧瓶应用程序:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/api", methods=['GET'])
def get_data():
return jsonify({"y": [1, 2, 3, 2, 3, 4],
"x": [1, 2, 3, 4, 5, 6],
}
)
反应前端:
import React, { useState, useEffect } from "react";
import Chart from "chart.js";
export default function CardLineChart() {
const [x, setX] = useState([]);
const [y, setY] = useState([]);
useEffect(() => {
fetch('/api')
.then(res => res.json())
.then(data => {
setY(data.y);
setX(data.x);
});
let config = {
type: "line",
data: {
labels: X,
datasets: [
{
label: new Date().getFullYear(),
backgroundColor: "rgb(252,228,0,0.7)",
borderColor: "rgb(252,228,0,0.9)",
data: Y,
},
],
},
options: {
maintainAspectRatio: false,
responsive: true,
title: {
display: false,
text: "Orders Chart",
},
tooltips: {
mode: "index",
intersect: false,
},
hover: {
mode: "nearest",
intersect: true,
},
scales: {
xAxes: [
{
display: false,
scaleLabel: {
display: false,
labelString: "Month",
},
gridLines: {
display: false,
color: "rgba(0, 0, 0, 0)",
zeroLineColor: "rgba(0, 0, 0, 0)",
},
},
],
yAxes: [
{
display: true,
scaleLabel: {
display: false,
labelString: "Value",
},
ticks: {
suggestedMin: 0,
},
gridLines: {
drawBorder: false,
lineWidth: 0.4,
color: "rgba(33, 37, 41, 0.2)",
zeroLineColor: "rgba(33, 37, 41, 0.15)",
},
},
],
},
},
};
var ctx = document.getElementById("line-chart").getContext("2d");
window.myLine = new Chart(ctx, config);
}, []);
return (
<>
<p>{x}</p>
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-4 rounded">
<div className="p-4 flex-auto">
{/* Chart */}
<div className="relative h-250-px">
<canvas id="line-chart"></canvas>
</div>
</div>
</div>
</>
);
}
【问题讨论】:
标签: javascript reactjs flask