如何在反应中动态导入声音文件?
How to dynamically import sound files in react?
const [soundFile, setSoundFile] = useState(null);
useEffect(() => {
async function importFile() {
const file = await import(
`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`
);
setSoundFile(file);
}
importFile();
}, []);
导入工作没有错误,但是当我在声音组件中使用它时 -
<AudioPlayer
className="audio-player"
style={{ direction: 'ltr' }}
showJumpControls={false}
autoPlay
src={soundFile} // <=====
/>
我收到以下错误:
未捕获(承诺)TypeError:无法将对象转换为原始值...
导入后,如果我记录 file
,我会得到
可能导入方法不对,但我不知道该怎么办..谢谢!
您最好使用 url 而不是导入并在 AudioPlayer 中使用它。
useEffect(() => {
setSoundFile(`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`)
}
)
...
<AudioPlayer
className="audio-player"
style={{ direction: 'ltr' }}
showJumpControls={false}
autoPlay
src={soundFile}
/>
在AudioPlayer组件中,可以异步读取文件并进行处理。
希望对您有所帮助。
我明白了!
1. 只需使用 require
而不是 import
=>
useEffect(() => {
const file = require(`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`);
setSoundFile(file);
}, []);
2. 或留在 import()
但传递给音频组件 file.default
(看问题中的图片)=>
useEffect(() => {
async function importFile() {
const file = await import(
`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`
);
setSoundFile(file.default); // <==========
}
importFile();
}, []);
const [soundFile, setSoundFile] = useState(null);
useEffect(() => {
async function importFile() {
const file = await import(
`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`
);
setSoundFile(file);
}
importFile();
}, []);
导入工作没有错误,但是当我在声音组件中使用它时 -
<AudioPlayer
className="audio-player"
style={{ direction: 'ltr' }}
showJumpControls={false}
autoPlay
src={soundFile} // <=====
/>
我收到以下错误: 未捕获(承诺)TypeError:无法将对象转换为原始值...
导入后,如果我记录 file
,我会得到
可能导入方法不对,但我不知道该怎么办..谢谢!
您最好使用 url 而不是导入并在 AudioPlayer 中使用它。
useEffect(() => {
setSoundFile(`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`)
}
)
...
<AudioPlayer
className="audio-player"
style={{ direction: 'ltr' }}
showJumpControls={false}
autoPlay
src={soundFile}
/>
在AudioPlayer组件中,可以异步读取文件并进行处理。
希望对您有所帮助。
我明白了!
1. 只需使用 require
而不是 import
=>
useEffect(() => {
const file = require(`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`);
setSoundFile(file);
}, []);
2. 或留在 import()
但传递给音频组件 file.default
(看问题中的图片)=>
useEffect(() => {
async function importFile() {
const file = await import(
`../../assets/media/${teamimType}/humash/${teamimType}-parasha.wav`
);
setSoundFile(file.default); // <==========
}
importFile();
}, []);