我遇到了一个问题,用户希望在单击树菜单时在条形图中动态更改数据。
其流程如下:
当用户刚刚登录并打开构建页面时,默认数据出现在条形图上,名为省级数据。
然后,当用户单击ACEH数据时,ACEH数据将自动出现在条形图上。
下面是我的条形图数据:
const dataChart = useMemo(
() => ({
dataProv: {
labels: dataProvinsi.map((o) => o.provinsi),
datasets: [
{
fill: true,
label: null,
backgroundColor: colorCode,
borderColor: colorCode,
borderWidth: 2,
borderRadius: 12,
data: dataProvinsi.map((o) => o.total_building),
},
],
},
dataCity: {
labels: dataKota.map((o) => o.kota),
datasets: [
{
fill: true,
label: null,
backgroundColor: colorCode,
borderColor: colorCode,
borderWidth: 2,
borderRadius: 12,
data: dataKota.map((o) => o.total_building),
},
],
},
}),
[dataKota, dataProvinsi]
);
这是用户点击时更改数据的逻辑。当我在控制台中使用它记录时,数据显示如下:
const changeData2 = () => {
const data = [dataChart.dataCity];
setDataKota(data);
console.log(data);
};
这是一个例子,当我尝试在浏览器:
https://va.media.tumblr.com/tumblr_rqe2h1npcr1zb5h2t.mp4
单击菜单时无法更改图表数据。
我的完整代码可以在这里找到。https://pastebin.com/zcyV09yJ
1条答案
按热度按时间rkttyhzu1#
传递给
Bar
组件的数据始终是相同的dataChart.dataProv
,因此您看不到更改。我认为您需要创建另一个状态,它将保存
dataChart
备忘录中的两个数据属性之一。我的建议是有一个状态,它将保存您想要在图表中呈现的备忘录中的属性名称,例如
dataType
,该状态将相应地保存值dataProv
和dataCity
。在点击呼叫时更新其值
然后在
Bar
组件中,按如下方式使用它希望能有所帮助。