Why aren't Victory Charts components composable?

wil*_*lma 5 reactjs victory-charts

I'm trying to create a React component that is a Line and Scatter chart to look like this: 在此处输入图片说明

The React component for a single line with circles looks like this:

function Line ({ color, chartData }) {
  return (
    <VictoryGroup data={chartData}>
      <VictoryLine
        style={{ data: { stroke: color } }}
      />
      <VictoryScatter
        style={{
          data: {
            stroke: color,
            fill: 'white',
            strokeWidth: 3
          }
        }}
      />
    </VictoryGroup>
  );
}
Run Code Online (Sandbox Code Playgroud)

I am trying to consume the component like so:

function MyCoolChart () {
  return (
    <VictoryChart>
      <Line
        color='#349CEE'
        chartData={data1}
      />
      <Line
        color='#715EBD'
        chartData={data2}
      />
    </VictoryChart>
  );
}
Run Code Online (Sandbox Code Playgroud)

But the Line components aren't rendered. They're only rendered if I call them directly as a function, like so:

export default function MyCoolChart () {
  return (
    <VictoryChart>
      {Line({ color: '#349CEE', chartData: data1 })}
      {Line({ color: '#715EBD', chartData: data2 })}
    </VictoryChart>
  );
}
Run Code Online (Sandbox Code Playgroud)

I'm trying to make a reusable component, so I'd rather not have to consume it as a function. I also want to understand why this is happening. Thanks!

For reference, the values of data1 and data2:

const data1 = [
  { x: 'M', y: 2 },
  { x: 'Tu', y: 3 },
  { x: 'W', y: 5 },
  { x: 'Th', y: 0 },
  { x: 'F', y: 7 }
];
const data2 = [
  { x: 'M', y: 1 },
  { x: 'Tu', y: 5 },
  { x: 'W', y: 5 },
  { x: 'Th', y: 7 },
  { x: 'F', y: 6 }
];
Run Code Online (Sandbox Code Playgroud)

wil*_*lma 4

感谢 @boygirl 回复我的 github 问题

结果胜利传递了一些自己的道具,需要传递这些道具才能正确渲染事物。这方面的例子有domainscale。这是我更新的组件:

function Line ({ color, ...other }) {
  return (
    <VictoryGroup {...other}>
      <VictoryLine
        style={{ data: { stroke: color } }}
      />
      <VictoryScatter
        style={{
          data: {
            stroke: color,
            fill: 'white',
            strokeWidth: 3
          }
        }}
      />
    </VictoryGroup>
  );
}
Run Code Online (Sandbox Code Playgroud)

现在它的消耗方式如下:

function MyCoolChart () {
  return (
    <VictoryChart>
      <Line
        color='#349CEE'
        data={data1}
      />
      <Line
        color='#715EBD'
        data={data2}
      />
    </VictoryChart>
  );
}
Run Code Online (Sandbox Code Playgroud)