4

我正在评估 react-vis。假设我有一个 react-vis 简单图表,当图表悬停时,如何添加一条随鼠标移动的垂直线?我的猜测是我需要在 XYPlot 中添加一个十字准线组件,也许还有一个 YAxis 组件。但我不明白怎么做,也找不到任何相关的例子。

function Chart({data}) {
  return <XYPlot width={400} height={300}><XAxis/><YAxis/>
    <HorizontalGridLines />
    <VerticalGridLines />
    <LineMarkSeries data={data} />
    </XYPlot>;
}
4

1 回答 1

2

可以使用组件添加垂直线<Crosshair />您可以在此处的文档中使用此示例。您需要设置onMouseLeaveonNearestX处理程序来更新Crosshairs行的值。诀窍是你必须把它放在组件divs内部,Crosshair这样它就不会呈现值框。我正在使用 React Hooks 来回答您的问题,但是您可以将 state 与类一起使用(React Hooks State Docs)。

import React, { useState } from 'react';

function Chart({data}) {
  const [points, setPoints] = useState([]);

  return <XYPlot
    width={400}
    height={300}
    onMouseLeave={() => setPoints([])}
    >
    <XAxis/>
    <YAxis/>
    <HorizontalGridLines />
    <VerticalGridLines />
    <LineMarkSeries
      data={data}
      onNearestX={v => setPoint([v])}
    />
    <Crosshair values={point}>
      {/* Divs inside Crosshair Component required to prevent value box render */}
      <div></div>
    </Crosshair>
  </XYPlot>;
}
于 2019-06-26T17:16:01.603 回答