gpt4 book ai didi

reactjs - 刷新具有动态 url/params 的 react 路由器页面

转载 作者:行者123 更新时间:2023-12-03 21:30:33 25 4
gpt4 key购买 nike

我有几个组件与具有动态 url 路径的 react 路由器一起显示。我有一个示例路径是
<Route path="/newproject/:id" onEnter={checkSesh} component= {ProjectDetails} />
进入这个组件的时候,我有一个componentWillMount提取 id 的函数url 的一部分,以便我可以获取正确项目的信息并将其呈现在 ProjectDetails 上成分。

  componentWillMount() {
var id = this.props.router.params.id
this.props.teamDetails(id);
}
this.props.teamDetails(id)这将调用一个 redux Action 创建者,它将向一个快速路由发出 axios 请求,该路由将从数据库中获取项目信息。
export function teamDetails(id) {
return function(dispatch) {
axios.get('/getteaminfo/' + id)
.then(res => {
dispatch({ type: "SET_TEAM_DETAILS", payload: {
teamInfo: res.data.teamInfo,
admin: res.data.admin,
adminID: res.data.teamInfo.teamAdmin,
teamMembers: res.data.teamInfo.teamMembers
}
})

});
}
}

在已经登录等之后访问页面时一切正常。但是当我刷新页面时 /newproject/:id , 我收到一个错误 Uncaught SyntaxError: Unexpected token < .我的浏览器中的示例 url 看起来像 http://localhost:3000/newproject/58df1ae6aabc4916206fdaae .当我刷新此页面时,出现该错误。错误是提示我的 <!DOCTYPE html>出于某种原因,我的 index.html 顶部的标记。这个 index.html 是渲染所有 React 的地方。

最佳答案

页面刷新时,不保留存储状态。确保状态对于加载页面不重要,或者至少每次都正确初始化。

例如登录信息如果保存在商店中,而不是使用 localStorage 或 cookie 等保存在浏览器上。然后在刷新时,尝试通过 axios 访问/getteaminfo/路由时会出现错误。响应将有错误 html 并且无法被 js 解析。

请检查您的网络控制台以获取更多信息。您可以使用像 https://github.com/zalmoxisus/redux-devtools-extension 这样的 chrome 扩展名这将显示您的商店等。

确保检查/getteaminfo/给出的 id 没有通过。

另外,请确保在您的服务器端,您是否通过这样的方式将请求路由到 react-router 路径?

例如表达js,

app.get('*', function response(req, res) {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});

一定要 sendFile与 index.html 的真实位置

关于reactjs - 刷新具有动态 url/params 的 react 路由器页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43163912/

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