rive-app / rive-react

React runtime for Rive

Home Page:https://rive-app.github.io/rive-react

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

.riv url is re-fetched many times

hckhanh opened this issue · comments

When ever I reuse the component that load the .riv file it's still re-fetched the riv file again no matter how many time it is fetched before. Is there any caching mechanism to deal with it? I am using vite and import it as an url

import animationSaladin from '@/assets/animations/file.riv?url'
import { useColorScheme } from '@/states/theme'
import Rive from '@rive-app/react-canvas'
import { memo } from 'react'

const styles = { width: 150, height: 150 }

function LoadingOverlayLoader() {
  const colorScheme = useColorScheme()
  return (
    <Rive
      artboard='Logo'
      src={animationSaladin}
      stateMachines={colorScheme}
      style={styles}
    />
  )
}

export default memo(LoadingOverlayLoader)

@hckhanh I think this issue was a similar case, and came to a good solution? #153

commented

We've released a new useRiveFile hook that should address this. See #153 .

Now you can pass in an existing RiveFile instance for an animation to the LoadingOverlayLoader instead of instantiating within the component. This lets you cache the RiveFile instance outside the component and use it across multiple components while fetching it only once.