React中点击图片跳转播放Reels类短视频失效,求解决方法
实现点击图片打开Reels短视频的可行方案
首先说你当前代码的问题:你写了onClick={reels},但既没正确导入reels,就算导入了,如果reels是React组件或未定义成可执行函数,点击事件也不会生效。下面给几个新手友好的方案,按简单程度排序:
方案一:直接打开外部短视频链接(最简单)
如果你的Reels是现成的第三方链接(比如YouTube Shorts),不用导入任何文件,直接在点击事件里调用浏览器的新窗口打开功能:
修改图片的代码:
<img src={currentUserImage} alt="用户头像" onClick={() => window.open("https://www.youtube.com/shorts/你的短视频ID", "_blank")} />
- 把链接换成你实际的短视频地址
"_blank"参数确保在新页面打开
方案二:跳转到自己的Reels页面(用React Router)
如果你的reels/app.js是一个React页面组件,需要用React Router来跳转:
- 先导入路由钩子和Reels组件:
import { useNavigate } from "react-router-dom"; import Reels from "../../reels/app"; // 确认路径正确,文件后缀如果是.tsx要改成对应后缀
- 在组件内添加路由跳转逻辑:
export function Home(): JSX.Element { const { currentUserImage } = useAppSelector((state) => state.currentUser); const navigate = useNavigate(); // 获取跳转函数 // 定义点击事件 const openReelsPage = () => { navigate("/reels"); // 跳转到Reels页面的路由,需要你提前在路由配置里加好这个路径 }; return ( <div className={styles.home}> {/* 其他代码不变 */} <div className={styles.userAvatar}> <img src={currentUserImage} alt="" onClick={openReelsPage}/> <h1> Lveewe</h1> </div> {/* 其他代码不变 */} </div> ); }
- 还要确保你的路由配置文件里有类似这样的代码:
import { Routes, Route } from "react-router-dom"; import Reels from "./reels/app"; function App() { return ( <Routes> {/* 其他路由 */} <Route path="/reels" element={<Reels />} /> </Routes> ); }
方案三:调用自定义播放函数
如果reels/app.js里定义了播放短视频的函数,要先正确导入并调用:
- 导入函数(根据文件内的导出方式调整):
// 如果是默认导出 import playReels from "../../reels/app"; // 如果是命名导出 import { playReels } from "../../reels/app";
- 在点击事件里调用:
const openReels = () => { playReels(); }; // 图片的onClick绑定这个函数 <img src={currentUserImage} alt="" onClick={openReels}/>
- 如果
playReels函数内部没处理新页面,你需要修改reels/app.js,比如在函数里加:
export function playReels() { window.open("你的短视频地址", "_blank"); }
排查要点
- 检查导入路径是否正确:../../reels/app是否对应实际文件位置,文件后缀(.js/.tsx)要匹配
- 检查
reels的导出方式:默认导出和命名导出的导入写法不一样,别搞混 - 测试点击事件是否触发:可以先写个简单的测试函数,比如
onClick={() => alert("点击了")},确认点击能生效再替换成实际逻辑
内容的提问来源于stack exchange,提问作者user19480770
相关产品推荐
相关产品推荐

