在 react.js 和 chart.js 中,我无法访问组件中的数据
In react.js with chart.js, I can't access to my data in a componant
我在 React.js 应用程序中有一个带有 chart.js 的简单图表。我想访问我的组件中的数据。用于创建一个简单的按钮以在我的图表中添加数据。但是他给我发了一个错误。你能帮我解释一下如何在其他组件中访问我的数据吗?非常感谢你。
我的组件BarChart.js
import React from "react"
import { Bar } from 'react-chartjs-2'
const BarChart = () => {
return (
<div>
<Bar
data={{
labels: ['Paris', 'Boston', 'Berlin', 'Dublin', 'Barcelone', 'Lisbonne'],
datasets: [{
label: 'Populations en millions',
data: [2.2, 0.7, 3.8, 1.4, 1.6, 0.6],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
}}
height={500}
width={500}
options={{
maintainAspectRatio: false,
scales: {
yAxes: [
{
ticks: {
beginAtZero: true,
},
},
],
},
}}
/>
</div>
)
}
export default BarChart
我的组件ButtonChart.js
import React from "react"
import BarChart from "./BarChart";
const ButtonChart = () => {
return (
<div className="inputBox">
<input type="number" className="inputAdd" placeholder="Valeur" id="inputData"/>
<input type="text" className="inputAdd" placeholder="Année" id="label"/>
<button onClick={updateChart()} id="insertData">Ajouter une donnée</button>
</div>
)
}
function updateChart() {
const inputData = document.getElementById('inputData');
BarChart.data.datasets[0].data.push(inputData.value);
}
export default ButtonChart
enter image description here
访问 BarChart.data
似乎是错误的,因为 BarChart
基本上是一个功能性的 React 组件。
你想要的大概是这样的:
- 你有一个
data
数组。
- 您想在
BarChart
中显示 data
- 您想为用户提供一个
button
,这样当用户单击该按钮时,就会在该 data
数组中添加一个新行。
- 并且当
data
数组更改时,您希望 BarChart
刷新并显示更新后的 data
数组。
如果是这种情况,那么我建议检查 React 文档中的 Lifting State Up。这里的用例几乎相同。您有一个跨 2 个组件共享的数据源。
此外,检查 React hooks 的使用情况以检查状态使用情况:https://reactjs.org/docs/hooks-state.html
这是您可以尝试的伪代码:
ParentComponent = () => {
// 1. Create your data state here using React Hooks
const [data, setData] = useState([someInitialData]);
return (
<div>
// 2. BarChart now relies on the data in the state
// Whenever the data updates, the chart refreshes
<BarChart data={data}/>
// 3. Pass setData to the component and trigger it with the
// button's onClick handler
<ButtonChart updateData={setData}/>
</div>
);
}
我在 React.js 应用程序中有一个带有 chart.js 的简单图表。我想访问我的组件中的数据。用于创建一个简单的按钮以在我的图表中添加数据。但是他给我发了一个错误。你能帮我解释一下如何在其他组件中访问我的数据吗?非常感谢你。
我的组件BarChart.js
import React from "react"
import { Bar } from 'react-chartjs-2'
const BarChart = () => {
return (
<div>
<Bar
data={{
labels: ['Paris', 'Boston', 'Berlin', 'Dublin', 'Barcelone', 'Lisbonne'],
datasets: [{
label: 'Populations en millions',
data: [2.2, 0.7, 3.8, 1.4, 1.6, 0.6],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
}}
height={500}
width={500}
options={{
maintainAspectRatio: false,
scales: {
yAxes: [
{
ticks: {
beginAtZero: true,
},
},
],
},
}}
/>
</div>
)
}
export default BarChart
我的组件ButtonChart.js
import React from "react"
import BarChart from "./BarChart";
const ButtonChart = () => {
return (
<div className="inputBox">
<input type="number" className="inputAdd" placeholder="Valeur" id="inputData"/>
<input type="text" className="inputAdd" placeholder="Année" id="label"/>
<button onClick={updateChart()} id="insertData">Ajouter une donnée</button>
</div>
)
}
function updateChart() {
const inputData = document.getElementById('inputData');
BarChart.data.datasets[0].data.push(inputData.value);
}
export default ButtonChart
enter image description here
访问 BarChart.data
似乎是错误的,因为 BarChart
基本上是一个功能性的 React 组件。
你想要的大概是这样的:
- 你有一个
data
数组。 - 您想在
BarChart
中显示 - 您想为用户提供一个
button
,这样当用户单击该按钮时,就会在该data
数组中添加一个新行。 - 并且当
data
数组更改时,您希望BarChart
刷新并显示更新后的data
数组。
data
如果是这种情况,那么我建议检查 React 文档中的 Lifting State Up。这里的用例几乎相同。您有一个跨 2 个组件共享的数据源。
此外,检查 React hooks 的使用情况以检查状态使用情况:https://reactjs.org/docs/hooks-state.html
这是您可以尝试的伪代码:
ParentComponent = () => {
// 1. Create your data state here using React Hooks
const [data, setData] = useState([someInitialData]);
return (
<div>
// 2. BarChart now relies on the data in the state
// Whenever the data updates, the chart refreshes
<BarChart data={data}/>
// 3. Pass setData to the component and trigger it with the
// button's onClick handler
<ButtonChart updateData={setData}/>
</div>
);
}