Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React组件中模拟数据_Javascript_Reactjs_Mocking_Ecmascript 6_Fixtures - Fatal编程技术网

Javascript 在React组件中模拟数据

Javascript 在React组件中模拟数据,javascript,reactjs,mocking,ecmascript-6,fixtures,Javascript,Reactjs,Mocking,Ecmascript 6,Fixtures,我正在使用图表的数据装置(使用) 看这里 const charts = [ {name: 'Page A', uv: 4000, pv: 2400, amt: 2400}, {name: 'Page B', uv: 3000, pv: 1398, amt: 2210}, {name: 'Page C', uv: 2000, pv: 9800, amt: 2290}, {name: 'Page D', uv: 2780, pv: 3908, amt: 2000}, {name:

我正在使用图表的数据装置(使用)

看这里

const charts = [
  {name: 'Page A', uv: 4000, pv: 2400, amt: 2400},
  {name: 'Page B', uv: 3000, pv: 1398, amt: 2210},
  {name: 'Page C', uv: 2000, pv: 9800, amt: 2290},
  {name: 'Page D', uv: 2780, pv: 3908, amt: 2000},
  {name: 'Page E', uv: 1890, pv: 4800, amt: 2181},
  {name: 'Page F', uv: 2390, pv: 3800, amt: 2500},
  {name: 'Page G', uv: 3490, pv: 4300, amt: 2100},
];
然后我有我的ChartGrid组件,我想在其中显示每个图表

导出默认类ChartsGrid扩展React.Component{
render(){
返回(
{this.props.charts.map((chart,i)=>)}
)
}
};
这是单个图表组件

导出默认类图表扩展React.Component{
渲染(){
const{charts,i}=this.props;
返回(
);
}
};
所有的工作都很好,请看带有7个代表相同数据的图表的图像


如何更改我的数据装置,以便只有一个图表元素包含此数据?

因此,这里的问题是,当您使用charts.map时,您告诉react为图表数组中的每个项目呈现一个图表组件,但将整个图表数组作为图形使用的数据传递

这个钻头正在这样做

{this.props.charts.map((chart, i) => <Chart {...this.props} key={i} i={i} chart={chart} />)}
然后是沙茨格里德

export default class ChartsGrid extends React.Component{

  render() {

    return (
      <div className="grid">
        {this.props.charts.map((chart, i) => <Chart key={i} chart={chart} />)}
      </div>
    )
  }
};
导出默认类ChartsGrid扩展React.Component{
render(){
返回(
{this.props.charts.map((chart,i)=>)}
)
}
};
单张表

export default class Chart extends React.Component {

  render () {
    const { chart } = this.props;
    return (
      <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="pv" stroke="#8884d8" activeDot={{r: 8}}/>
        <Line type="monotone" dataKey="uv" stroke="#82ca9d" />
      </LineChart>
    );
  }
};
导出默认类图表扩展React.Component{
渲染(){
const{chart}=this.props;
返回(
);
}
};

因此,这里的问题是,当您使用charts.map时,您告诉react为charts数组中的每个项目呈现单个图表组件,但将整个图表数组作为用于图形的数据传递

这个钻头正在这样做

{this.props.charts.map((chart, i) => <Chart {...this.props} key={i} i={i} chart={chart} />)}
然后是沙茨格里德

export default class ChartsGrid extends React.Component{

  render() {

    return (
      <div className="grid">
        {this.props.charts.map((chart, i) => <Chart key={i} chart={chart} />)}
      </div>
    )
  }
};
导出默认类ChartsGrid扩展React.Component{
render(){
返回(
{this.props.charts.map((chart,i)=>)}
)
}
};
单张表

export default class Chart extends React.Component {

  render () {
    const { chart } = this.props;
    return (
      <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="pv" stroke="#8884d8" activeDot={{r: 8}}/>
        <Line type="monotone" dataKey="uv" stroke="#82ca9d" />
      </LineChart>
    );
  }
};
导出默认类图表扩展React.Component{
渲染(){
const{chart}=this.props;
返回(
);
}
};

然后,您还可以抽象设置,如宽度、高度、边距等。。。到图表数组,以便您可以使用相同的组件生成不同的图表,然后还可以抽象设置,如宽度、高度、边距等。。。添加到图表数组,以便您可以使用相同的组件生成不同的图表,
export default class Chart extends React.Component {

  render () {
    const { chart } = this.props;
    return (
      <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="pv" stroke="#8884d8" activeDot={{r: 8}}/>
        <Line type="monotone" dataKey="uv" stroke="#82ca9d" />
      </LineChart>
    );
  }
};