我正在建立一个网站,用户可以在其中选择日期和产品,并查看相关库存。通过表格和图表(使用react-chartjs-2
)来表示库存。我正在使用React Hooks
道具正确发送,但是我不确定为什么图表没有动态升级。确实会升级钢筋的价值,而不是钢筋本身。
示例:在日期15-11-2019
中,产品Desktop ITG56
的库存为25
。
用户可以单击表并修改清单。例如,用户将Desktop ITG56的清单设置为11。
如果我console.log新结果,则包含清单的阵列将更新。但是,条形图不会减少。如果我将鼠标悬停在它上面,它表明库存25被库存11取代了(所以很好!),但是柱线并没有减少。
在用户在表格中输入“ 11”之前
MyGraph组件
import React, {Component, useState, useEffect, useCallback} from 'react';
import { Line, Bar } from 'react-chartjs-2'
function MyChart({results}) {
let selected_dates = results['selected_dates']
let products_results = results['selected_products']
let my_dataset = []
var i;
if (products_results) {
my_dataset = []
for (i = 0; i < products_results.length; i++) {
let dataset_dict = {}
dataset_dict['label'] = products_results[i]['product_name']
dataset_dict['data'] = products_results[i]['inventory']
dataset_dict['lineTension'] = 0.5
dataset_dict['fill'] = false
dataset_dict['borderColor'] = products_results[i]['color']
dataset_dict['backgroundColor'] = products_results[i]['color']
my_dataset.push(dataset_dict)
console.log(my_dataset)
}
}
let data = {
labels: selected_dates,
datasets: my_dataset
};
if (results.length === 0) {
return null
} else if (results["selected_dates"].length > 1) {
return(
<div>
<Line
data={data}
options={{ maintainAspectRatio: true }}
redraw
/>
</div>
)
} else {
return(
<div>
<Bar
data={data}
options={{ maintainAspectRatio: true }}
redraw
/>
</div>
)
}
}
export default MyChart;