TypeScript Support
ReactPixi gives you full type support.
 
PointLike types
The props position, scale, pivot, anchor and skew are PointLike types.
type PointLike =
  | { x: number; y: number }
  | Point
  | ObservablePoint
  | number
  | [number]
  | [number, number];
Example:
import { Sprite } from '@pixi/react';
import { Point } from 'pixi.js';
<Sprite anchor={{ x: 0.5, y: 0.5 }} />
<Sprite anchor={new Point(0.5, 0.5)} />
<Sprite anchor={0.5} />
<Sprite anchor={[0.5]} />
<Sprite anchor={[0.5, 0.5]} />
Source types
Apply source directly to a component. Source types are available for:
- <Sprite>
- <Text>
- <NineSlicePlane>
- <TilingSprite>
- <SimpleRope>
- <SimpleMesh>
- <AnimatedSprite>
type Source = {
  image?: ImageSource;
  video?: VideoSource;
  source?:
    | number
    | ImageSource
    | VideoSource
    | HTMLCanvasElement
    | Texture;
};
Example:
<Sprite image="./my-image.png" />
<Sprite video={document.querySelector('#video')} />
Custom Components
Example:
import { PixiComponent } from '@pixi/react';
import { Graphics } from 'pixi.js';
interface RectangleProps {
  x: number;
  y: number;
  width: number;
  height: number;
  color: number;
}
const Rectangle = PixiComponent<RectangleProps, Graphics>('Rectangle', {
  create: () => new Graphics(),
  applyProps: (ins, _, props) => {
    ins.x = props.x;
    ins.beginFill(props.color);
    ins.drawRect(props.x, props.y, props.width, props.height);
    ins.endFill();
  },
});
const App = () => (
  <Stage>
    <Rectangle x={100} y={100} width={100} height={100} color={0xff0000} />
  </Stage>
);
 
PixiRef
Get the PixiJS instance type for a ReactPixi component:
Example:
import { Container, PixiRef } from '@pixi/react';
type IContainer = PixiRef<typeof Container>; // Pixi Container
const App = () => {
  const containerRef = React.useRef<IContainer>(null);
  return <Container ref={containerRef} />;
};
Type component props
Extract a component prop type as follow:
import { useCallback, ComponentProps } from 'react';
import { Graphics } from '@pixi/react';
type Draw = ComponentProps<typeof Graphics>['draw'];
const App = () => {
  const draw = useCallback<Draw>((g) => {
    g; // PIXI.Graphics
    g.clear();
    g.beginFill(props.color);
    g.drawRect(0, 0, 100, 100);
    g.endFill();
  });
  return <Graphics draw={draw} />;
};