gpt4 book ai didi

reactjs - React Router 4 阻止 iframe url

转载 作者:行者123 更新时间:2023-12-03 13:39:04 26 4
gpt4 key购买 nike

我有一个 React 项目,其中有一个横幅库,我使用 React Router 4 在不同的客户、年份和事件之间导航

<BrowserRouter>
<div>
<Switch>
<Route path="/:client/:year/:campaign/:banner" exact component={bannerPage} />
<Route path="/:client/:year/:campaign" exact component={campaignPage} />
<Route path="/:client/:year" exact component={campaignIndex} />
<Route path="/" exact component={clientIndex} />
</Switch>
</div>
</BrowserRouter>

在显示特定横幅的组件上,我有一个 i 框架来渲染实际的横幅,仅此而已

  render() {
return(
<div>
<iframe src='data/client/year/campaign/banner'
width="300px"
height="250px"
display="initial" >
</iframe>
</div>
)
}

但是当我尝试渲染横幅时,React Router 拦截了 iframe 的 src 并再次显示没有组件的 index.html 页面,因为路径与任何路由都不匹配

任何帮助将不胜感激!谢谢!

最佳答案

我不完全确定你所说的“拦截 iframe 的 src”是什么意思,但我假设你指的是服务器上的行为,因为我看不到你所描述的内容与客户端代码相关。

一般来说,服务器上的 React Router 的工作方式是使用 catch all 处理程序来匹配除静态内容之外的所有内容。您可以通过在捕获所有内容之前定义静态内容来避免静态内容。

const app = express();
app.use('/static', express.static(__dirname + '/static'));
app.get('*', (req, res) => {
res.sendFile(__dirname + '/static/index.html')
});
app.listen('8000');

现在,如果您需要在应用程序请求 /data/client/year/campaign/banner 时提供一些不同的内容,则需要在捕获所有内容之前添加一个处理程序。如果没有有关您的服务器设置的更多信息,我不确定具体会是什么,但类似这样:

const app = express();
app.use('/static', express.static(__dirname + '/static'));
app.use('/data', express.static(__dirname + '/data'));
app.get('*', (req, res) => {
res.sendFile(__dirname + '/static/index.html')
});
app.listen('8000');

关于reactjs - React Router 4 阻止 iframe url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46288042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com