我react-native-sound
在此组件中使用音频,并希望从传递给组件的 url 文件中播放。问题是,如果在功能组件内声明了 var audio,那么每次组件渲染时都会再次创建该变量,这会将声音文件作为新实例播放,并且我们会在彼此之上多次播放相同的声音。
import Sound from "react-native-sound"
var audio = new Sound.. //Works if declared here but cant's pass url prop
const SoundPlayer: FC<SoundProps> = ({ url }) => {
const [playing, setPlaying] = useState<boolean | null>(null)
var audio = new Sound(url, null, (error) => {
if (error) {
console.log("failed to load the sound", error)
return
}
})
如果我将 var audio 作为全局变量移到功能组件之外/上方,它可以正常工作,但是我不能将组件 prop aka 传递url
给它,因为变量超出了功能组件范围。如何传递一个保持引用并且不会在每次渲染时重新创建的道具?