LoginSignup
0
0

More than 1 year has passed since last update.

Reactでテトリスをつくる⑥_レンダリングの負荷を抑える

Last updated at Posted at 2021-06-06

テトリスなどのDOMの動きが激しいものは、レンダリングの負荷を抑えた方がよい。
今までは、画面全部を毎回描画していたが、更新部分だけの描画にして、負荷を抑えたい

  • まずは、描画を変動部分と静的部分に分けた
    • テトリスの枠とか、すでに底に落ちたブロックは静的部分として、落ちてくるブロックを動的部分とした。
    • 毎回の描画は、落ちてくるブロックを描画する。
    • ブロックが底まで落ちたら、そのブロックを静的部分に追加する。
return (
        <div onKeyDown={(e) => {keydown(e)}} tabIndex="0">
            <Flow disp={disp}/>
            <Static base={base}/>
        </div>
    )

これだけだと、setStateの呼び出しでStaticもレンダリングされてしまうので、memo化などをすることになる

  • memo化
const Static = React.memo(({...props})=> {
    let screen = []
    for(let i = 0; i < props.base.length; i++) {
        for(let j = 0; j < props.base[i].length; j++) {
            (props.base[i][j]===1) ? screen.push(<Dot x={j * 20} y={i * 20} />) : null
        }
    }
    return ({screen})
})

キャプチャ13.PNG

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0