2016-11-27 5 views
0

I-Daten Befestigungen am raubend die Charts mit RechartsReagieren DataKey in Charts

gebaut füllen Ich habe zwei Objekte in meine Daten: Finanzen und DAU

const charts = [ 
    { 
    name: 'Finances', 
    data:[ 
     {name: 'April', Balance: 48530, saving: 0}, 
     {name: 'May', Balance: 50328, saving: 1798}, 
     {name: 'June', Balance: 48573, saving: -1755}, 
     {name: 'July', Balance: 48825, saving: 252} 
    ] 
    }, 
    { 
    name: 'DAU', 
    data: [ 
     {Day: '2016-10-28', Android: 27, iOS: 12}, 
     {Day: '2016-10-29', Android: 20, iOS: 17}, 
     {Day: '2016-10-30', Android: 17, iOS: 13}, 
     {Day: '2016-10-31', Android: 15, iOS: 13}, 
     {Day: '2016-11-01', Android: 14, iOS: 11} 
    ] 
    } 
]; 

export default charts; 

Im Moment bin ich Übergabe der datakey nur für das erste Datenobjekt (Finance)

für <XAxis dataKey="name"/> und die beiden Linien KomponenteDieseund <Line type="monotone" dataKey="saving"/>

ist meine Diagrammkomponente

export default class Chart extends React.Component { 
    render() { 
    const { chart, i } = this.props; 
    return (
     <div> 
     <h1>{chart.name}</h1> 
     <LineChart width={600} height={300} data={chart.data} 
       margin={{top: 5, right: 30, left: 20, bottom: 5}}> 
     <XAxis dataKey="name"/> 
     <YAxis/> 
     <CartesianGrid strokeDasharray="3 3"/> 
     <Tooltip/> 
     <Legend /> 
     <Line type="monotone" dataKey="Balance" stroke="#82ca9d" /> 
     <Line type="monotone" dataKey="saving" stroke="#8884d8" activeDot={{r: 8}}/> 
     </LineChart> 
     </div> 
    ); 
    } 
}; 

Wie kann ich die dataKey dynanmically in meinen XAxis und Lines Komponenten für die 2 Objekte Finanzen und DAU passieren?

+0

Sie könnten die Namen als Requisiten passieren zu 'Diagramm' dar –

+0

das, was ich versucht habe, wenn Sie die Antwort mit dem Code aktualisieren ich sehen, was ich bin falsch machen – Koala7

Antwort

1

Ich würde die Schlüssel zu den Diagrammobjekten hinzufügen und sie als Requisiten innerhalb der Chart Komponente verwenden. Wie so:

const charts = [ 
    { 
    name: 'Finances', 
    xAxisKey: 'name', 
    line1Key: 'Balance', 
    line2Key: 'saving',  
    data:[ 
     {name: 'April', Balance: 48530, saving: 0}, 
     {name: 'May', Balance: 50328, saving: 1798}, 
     {name: 'June', Balance: 48573, saving: -1755}, 
     {name: 'July', Balance: 48825, saving: 252} 
    ] 
    }, 
    { 
    name: 'DAU', 
    xAxisKey: 'Day', 
    line1Key: 'Android', 
    line2Key: 'iOS', 
    data: [ 
     {Day: '2016-10-28', Android: 27, iOS: 12}, 
     {Day: '2016-10-29', Android: 20, iOS: 17}, 
     {Day: '2016-10-30', Android: 17, iOS: 13}, 
     {Day: '2016-10-31', Android: 15, iOS: 13}, 
     {Day: '2016-11-01', Android: 14, iOS: 11} 
    ] 
    } 
]; 

und die Komponente:

export default class Chart extends React.Component { 
    render() { 
    const { chart, i } = this.props; 
    return (
     <div> 
     <h1>{chart.name}</h1> 
     <LineChart width={600} height={300} data={chart.data} 
       margin={{top: 5, right: 30, left: 20, bottom: 5}}> 
     <XAxis dataKey={chart.xAxisKey} /> 
     <YAxis/> 
     <CartesianGrid strokeDasharray="3 3"/> 
     <Tooltip/> 
     <Legend /> 
     <Line type="monotone" dataKey={chart.line1Key} stroke="#82ca9d" /> 
     <Line type="monotone" dataKey={chart.line2Key} stroke="#8884d8" activeDot={{r: 8}}/> 
     </LineChart> 
     </div> 
    ); 
    } 
};