@vx/responsive
npm install --save @vx/responsive
The @vx/responsive
package is here to help you make responsive graphs.
With Enhancers
withScreenSize
withParentSize
With Components
ParentSize
ScaleSVG
withScreenSize
If you would like your graph to adapt to the screen size, you can use withScreenSize()
. The resulting component will pass screenWidth
and screenHeight
props to the wrapped component containing the respective screen dimensions.
Example:
import { withScreenSize } from '@vx/responsive';
let chartToRender = withScreenSize(MySuperCoolVxChart);
withParentSize
If you would like your graph to adapt to it's parent component's size, you can use withParentSize()
. The resulting component will pass parentWidth
and parentHeight
props to the wrapped component containing the respective parent's dimensions.
Example:
import { withParentSize } from '@vx/responsive';
let chartToRender = withParentSize(MySuperCoolVxChart);
ParentSize
You might do the same thing using the ParentSize
component.
Example:
import { ParentSize } from "@vx/responsive";
let chartToRender = (
<ParentSize>
{parent => (
<MySuperCoolVxChart
parentWidth={parent.width}
parentHeight={parent.height}
parentTop={parent.top}
parentLeft={parent.left}
// this is the referer to the wrapper component
parentRef={parent.ref}
// this function can be called inside MySuperCoolVxChart to cause a resize of the wrapper component
resizeParent={parent.resize}
/>)
}
</ParentSize>
);
ScaleSVG
You can also create a responsive chart with a specific viewBox with the ScaleSVG
component.
Example:
import { ScaleSVG } from '@vx/responsive';
let chartToRender = (
<ScaleSVG
width={400}
height={400}
>
<MySuperCoolVXChart />
</ScaleSVG>
);