как мне вернуть http теги в функции карты реагировать - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь построить динамическую гистограмму, которая имеет много уровней. Поэтому я использовал функцию карты для генерации графика. я делаю консоль, записывающую вар и прочее, она работает правильно. Но возврат тега не отображается. я пробую простой div {<div>Hey</div>}, но он также не отображается. Это мой код,

import React from 'react';
import {BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend} from 'recharts';


export const LocalBarChart =({config, data})=>{

    //data :-  [{name: 'X Axis Name', levelOneName: levelOneValue, levelTwoName: levelTwoValue} , {name: 'X Axis Name', levelOneName: levelOneValue, levelTwoName: levelTwoValue}];

    //config :-  {numberOfLevel: (1-10) , COLORS : ['#0088FE', '#00C49F', '#FFBB28', '#FF8042']}; // 0 means full filled piechart, 0<x<50 ->liner circle

    const COLORS = config.COLORS;
    let keysArray=Object.keys(data[0]);

    return(
        <BarChart width={600} height={300} data={data}
            margin={{top: 20, right: 30, left: 20, bottom: 5}}>
            <CartesianGrid strokeDasharray="6 0"/>
            <XAxis dataKey="name"/>
            <YAxis/>
            <Tooltip/>
            <Legend />


            {  data.map((e, i) => {

                if(i===0){
                    console.log(e);
                    keysArray.map((datas,indexs)=>{
                        if(datas!=="name"){
                            console.log(indexs)
                            console.log(datas)
                            return (
                                <Bar dataKey={datas} stackId="a" fill={COLORS[indexs]} />
                            );

                        }
                    })
                }


            }) }


        {/* <Bar dataKey="pv" stackId="a" fill="#8884d8" />
       <Bar dataKey="uv" stackId="a" fill="#82ca9d" />
       <Bar dataKey={keysArray[1]} stackId="a" fill={COLORS[0]} />    */}
        </BarChart>
    );


}

Пожалуйста, помогите мне разобраться в этом .. спасибо

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Вам нужно вернуться с карты как

return(
    <BarChart width={600} height={300} data={data}
        margin={{top: 20, right: 30, left: 20, bottom: 5}}>
        <CartesianGrid strokeDasharray="6 0"/>
        <XAxis dataKey="name"/>
        <YAxis/>
        <Tooltip/>
        <Legend />


        {  data.map((e, i) => {

            if(i===0){
                console.log(e);
                return keysArray.map((datas,indexs)=>{
                    if(datas!=="name"){
                        console.log(indexs)
                        console.log(datas)
                        return (
                            <Bar dataKey={datas} stackId="a" fill={COLORS[indexs]} />
                        );

                    }
                })
            }


        }) }


    {/* <Bar dataKey="pv" stackId="a" fill="#8884d8" />
   <Bar dataKey="uv" stackId="a" fill="#82ca9d" />
   <Bar dataKey={keysArray[1]} stackId="a" fill={COLORS[0]} />    */}
    </BarChart>
);

Надеюсь, это поможет

0 голосов
/ 31 октября 2019

попробуйте добавить return перед keysArray.map((datas,indexs)=>{, вам нужно вернуться внутрь карты, чтобы получить массив.

в настоящее время вы получаете массив нулевых значений.

из вашего кода - выполучу 2D массив. это то, что вы хотите!

...