Javascript 如何在重定向页面上重新加载页面
在我的应用程序中,我使用React Router向我的应用程序添加路由。一旦用户单击“保存”,我将使用带有路由器的Javascript 如何在重定向页面上重新加载页面,javascript,reactjs,Javascript,Reactjs,在我的应用程序中,我使用React Router向我的应用程序添加路由。一旦用户单击“保存”,我将使用带有路由器的历史记录从我的AddAlbum类组件重定向到我的主页(提要)。我的问题是我的AddAlbum组件正在更新我的主页,因此我需要在重定向以查看AddAlbum组件所做的更改后重新加载我的主页。我将如何做到这一点 以下是我的App.js组件中的路线: import { BrowserRouter, Router, Route } from "react-router-dom"; retur
历史记录从我的AddAlbum类组件重定向到我的主页(提要)。我的问题是我的AddAlbum组件正在更新我的主页,因此我需要在重定向以查看AddAlbum组件所做的更改后重新加载我的主页。我将如何做到这一点
以下是我的App.js组件中的路线:
import { BrowserRouter, Router, Route } from "react-router-dom";
return (
<BrowserRouter>
<div className="App">
<Router history={history}>
<Route path="/album/create" component={AddAlbum}/>
<Route exact path="/feed" component={Feed}/>
</Router>
</div>
</BrowserRouter>
);
一旦重定向到主(源)组件,我将如何重新加载它?问题:在您的axios.post
之后(在catch
之前的9行),您不会更新您的状态。这就是为什么你看不到这些变化
解决方案1:如果POST请求正确返回,请更新您的状态(将相册添加到相册阵列中)
解决方案2:如果POST请求正确返回,请使用window.location.reload()
重新加载页面,这样您就可以从apicall更新相册。大概是这样的:
axios.post(yourURL, yourData)
.then(res => {
// check if response is correct and
window.location.reload();
})
.catch(console.error);
希望有帮助。问题:在您的axios.post
之后(在catch
之前的9行),您不会更新您的状态。这就是为什么你看不到这些变化
解决方案1:如果POST请求正确返回,请更新您的状态(将相册添加到相册阵列中)
解决方案2:如果POST请求正确返回,请使用window.location.reload()
重新加载页面,这样您就可以从apicall更新相册。大概是这样的:
axios.post(yourURL, yourData)
.then(res => {
// check if response is correct and
window.location.reload();
})
.catch(console.error);
希望有帮助。我刚刚快速扫描了您的代码,但我认为问题出在您的axios post请求中。这样,当您重定向到/feed
时,它将从该端点提取更新的数据
axios.post(“http://localhost:3000/albums“,数据,{})
。然后(res=>{
//然后打印响应状态
console.log(res.statusText);
//仅当http请求完成时重定向。
历史。推送(“/feed”);
});
我刚刚快速扫描了您的代码,但我认为问题出在您的axios post请求中。这样,当您重定向到/feed
时,它将从该端点提取更新的数据
axios.post(“http://localhost:3000/albums“,数据,{})
。然后(res=>{
//然后打印响应状态
console.log(res.statusText);
//仅当http请求完成时重定向。
历史。推送(“/feed”);
});
您是否使用某种全局状态?因为在每次管线更改时,组件都应再次渲染。没有任何旧的价值观。@JeanAguilar你所说的全球状态是什么意思?在哪里?如果我点击React路由器的链接,我认为它不应该重新加载。Idk关于我是否使用withRouter重定向。重定向工作正常,对吗?是的,重定向工作正常。请添加AddAlbum组件的更多代码。特别是保存按钮部分。您是否使用某种全局状态?因为在每次管线更改时,组件都应再次渲染。没有任何旧的价值观。@JeanAguilar你所说的全球状态是什么意思?在哪里?如果我点击React路由器的链接,我认为它不应该重新加载。Idk关于我是否使用withRouter重定向。重定向工作正常,对吗?是的,重定向工作正常。请添加AddAlbum组件的更多代码。特别是Save按钮部分。如果我在我的主页(提要)组件中添加与componentDidMount()
设置状态相同的componentdiddupdate
,我的组件将在页面上获取新数据。唯一的问题是我收到一条警告:warning:无法对未安装的组件执行React状态更新。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消componentWillUnmount方法中的所有订阅和异步任务。
我在这里问了一个问题:这看起来是另一个问题:相册似乎处于提要状态,提要已卸载。您可以将该变量置于某个父状态,或者更简单地说,使用解决方案2并执行window.location.reload()
my componentDidUpdate
,如果我在my home(提要)组件中使用与componentDidMount()
相同的设置状态添加componentDidMount()。唯一的问题是我收到一条警告:warning:无法对未安装的组件执行React状态更新。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消componentWillUnmount方法中的所有订阅和异步任务。
我在这里问了一个问题:这看起来是另一个问题:相册似乎处于提要状态,提要已卸载。您可以将该变量置于某个父状态,或者更简单地说,使用解决方案2并执行window.location.reload()