はじめに
最近、業務にて@inlet/react-pixi
から@pixi/react
に移行する作業を行いました。この移行は、@inlet/react-pixi
が廃止され、@pixi/react
に変更されたこと、React v18が@inlet/react-pixi
に未対応だったため行いました。
本記事では、@pixi/react
への移行作業で行った主な変更点について解説します。
変更点1: PixiSpriteの型定義
@inlet/react-pixi
では、PixiSpriteの型定義はシンプルにuseRef<PixiSprite>(null)
と記述していました。しかし、@pixi/react
ではPixiRefを使用する必要があるため、以下のように変更しました。
// 旧: @inlet/react-pixi
const maskRef = useRef<PixiSprite>(null);
// 新: @pixi/react
import { PixiRef } from '@pixi/react';
import { Sprite } from '@pixi/react';
type ISprite = PixiRef<typeof Sprite>;
const maskRef = useRef<ISprite>(null);
PixiRef
はPixiJSオブジェクトをReact側から参照するための型です。
変更点2: PixiComponentのジェネリクス型
@inlet/react-pixi
では、PixiComponentの第2引数にContainerを指定していました。しかし、@pixi/react
では型エラーが発生してしまう問題が公式のIssueで報告されております。
// 旧: @inlet/react-pixi
const PixiVideo = PixiComponent<PixiVideoProps, Container>('Video', {
// 省略
}
// 新: @pixi/react
// https://github.com/pixijs/pixi-react/issues/457 でバグ報告のissueが立っている
const PixiVideo = PixiComponent<PixiVideoProps, any>('Video', {
// 省略
}
この変更は、@pixi/react
の内部実装が変更されたことに伴うものです。
変更点3: Stageコンポーネントのoptions
@inlet/react-pixi
では、Stage
コンポーネントのtransparent
オプションを使用していましたが、@pixi/react
ではこのオプションが非推奨となり、代わりにbackgroundAlpha
オプションを使用する必要があります。
// 旧: @inlet/react-pixi
<Stage
options={{
transparent: true,
}}
/>
// 新: @pixi/react
<Stage
options={{
backgroundAlpha: 0,
}}
/>
backgroundAlpha
は背景の不透明度を0~1の値で指定します。transparent: true
と同じ効果を得るにはbackgroundAlpha: 0
と設定します。