Javascript React中的ChartJS即使道具改变也不会改变-Hooks

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记录新结果,则包含资源清册的数组将被更新。但是,条形图不会减少。如果我将鼠

我正在建立一个网站,用户可以选择一个日期(s)和一个产品(s),并看到相关的库存。通过表格和图表(使用
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文档中找不到任何东西。你有消息来源吗?