Javascript React中的ChartJS即使道具改变也不会改变-Hooks
我正在建立一个网站,用户可以选择一个日期(s)和一个产品(s),并看到相关的库存。通过表格和图表(使用Javascript React中的ChartJS即使道具改变也不会改变-Hooks,javascript,reactjs,chart.js,react-chartjs,Javascript,Reactjs,Chart.js,React Chartjs,我正在建立一个网站,用户可以选择一个日期(s)和一个产品(s),并看到相关的库存。通过表格和图表(使用react-chartjs-2)表示库存。我在用鱼钩 道具发送正确,但我不确定为什么图表没有动态升级。它确实会升级条上的值,但不会升级条本身 示例:在日期15-11-2019中,产品Desktop ITG56的库存为25 用户可以单击该表并修改库存。例如,用户将桌面ITG56的库存设置为11 如果I console.log记录新结果,则包含资源清册的数组将被更新。但是,条形图不会减少。如果我将鼠
react-chartjs-2
)表示库存。我在用鱼钩
道具发送正确,但我不确定为什么图表没有动态升级。它确实会升级条上的值,但不会升级条本身
示例:在日期15-11-2019
中,产品Desktop ITG56
的库存为25
用户可以单击该表并修改库存。例如,用户将桌面ITG56的库存设置为11
如果I console.log记录新结果,则包含资源清册的数组将被更新。但是,条形图不会减少。如果我将鼠标悬停在它上面,它会显示库存25被库存11所取代(所以这很好!),但该条不会减少
在用户在表中键入“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;
import React,{Component,useState,useffect,useCallback}从'React'导入;
从'react-chartjs-2'导入{Line,Bar}
函数MyChart({results}){
让选定的日期=结果[“选定的日期”]
let products\u results=results['selected\u products']
让我的_数据集=[]
var i;
if(产品和结果){
我的_数据集=[]
对于(i=0;i1){
返回(
)
}否则{
返回(
)
}
}
导出默认MyChart;
什么样的状态逻辑有父级?表组件和MyChart组件是表单的子级。当用户修改表
时,将调用处理函数,以便使用最新的表实体更新表单
。这很有效。由于MyChart
是Form
的子项,而且Form
results更新,我不明白为什么条形图没有更改。我看不到您更新图表或清除并重新绘制画布。这很重要。我不确定我是否理解这一点。我使用的是redraw
我以前从未见过这种语法,在chart.js文档中找不到任何东西。你有消息来源吗?