reactjs - 改变反应组件中的声音
问题描述
我想在使用打字稿的反应应用程序中在后台播放音乐,但是当在父节点中更改音乐时,子节点中的声音没有任何变化。
import React from 'react';
import './audioPlayer.css';
interface AudioPlayerProps {
music: string
}
const AudioPlayer: React.FC<AudioPlayerProps> = ({ music }) => {
return (
<audio >
<source src={music} type="audio/mpeg" />
Your browser does not support the audio tag.
</audio>
);
};
export default React.memo(AudioPlayer,(prevProps, nextProps)=>{
return prevProps.music === nextProps.music
});
解决方案
解决使用ref
JSX 属性的问题
import React, { useState, useEffect } from 'react';
import './audioPlayer.css';
interface AudioPlayerProps {
music: string,
}
const AudioPlayer: React.FC<AudioPlayerProps> = ({ music}) => {
const [audio, setAudio] = useState();
useEffect(() => {
if(audio){
audio.pause();
audio.load();
audio.play();
}
}, [music,audio]);
return (
<audio ref={(audioref)=>{ setAudio(audioref) }} >
<source src={music} type="audio/mpeg" />
Your browser does not support the audio tag.
</audio>
);
};
export default React.memo(AudioPlayer,(prevProps, nextProps)=>{
return prevProps.music === nextProps.music
});
推荐阅读
- html - 为什么我的 VBA 程序没有从网站获取所有等于“路径”的标签名称?
- python - Python 不理解 RAM 驱动器上的 tmp 文件夹
- php - 如何更改身份验证错误消息?
- gitlab - Gitlab CI 工件的好字符串键是什么?
- c++ - 我无法理解使用 for 循环 5 次进行冒泡排序的逻辑
- python - 为 django-mptt 编写一个高效的 node.all_siblings_leaf() 方法
- rpa - 即使识别出锚点,RPA 也不会单击子窗口中的“喜欢”按钮
- python - ValueError:样本不够大,无法包含至少一行数据。请增加 `sample` 中的字节数
- javascript - 获取对象数组中每个唯一键的最高值(Javascript)
- python - Gunicorn 在运行 heroku 日志时返回错误