在单页应用程序中刷新页面

Refresh a page in a single page application

假设您收到一个 link 将您从单页应用程序转到一个页面。您希望能够立即看到该页面(当然,如果您已登录)。

问题是没有从服务器获取数据,所以页面是空的。

获取所有必要数据以正确查看该页面的最佳做法是什么?。基本上,当刷新页面时,你希望停留在那个地方,而不是被重定向到“/”(例如)。

我考虑制作一个单独的组件来获取所有数据,并在完成后呈现页面。但是,它有一个缺点,即在正常使用应用程序时会重复获取数据。

对于单页应用程序,您不必自己手动刷新 页面。我会考虑使用 react-router for navigation within your single page application. Furthermore, when a particular view (React Component) needs more data to be properly displayed I would leverage the componentDidMount() lifecycle. Within componentDidMount() you can fetch the necessary data with Axios or with the browser's built in fetch api。理想情况下,您 不应一次获取整个应用程序 ,并且您的 React 组件本质上是模块化的。作为如何利用 Axios 库的示例,可以按照以下方式做一些事情:

  1. 安装axios:

    npm install -S axios yarn add axios

  2. 使用 componentDidMount() 生命周期方法为你的 React 组件获取必要的数据:

反应组件:

componentDidMount(){ // Make a request for a user with a given ID axios.get('/user?ID=12345') .then(function (response) { // handle success: i.e. set your state so you can use your data console.log(response); }) .catch(function (error) { // handle error console.log(error); }) .finally(function () { // always executed }); }

希望对您有所帮助!

正如@Nathan 所指出的,刷新单页应用程序是一种不好的做法。

我建议检查数据变量是否未定义(在受控组件、道具的情况下)并基于此 return 组件(以显示页面仍在加载)或

例如如果(!this.props)return; //null 如果你想显示一个 //白页 return;

希望这能说明问题! 编码愉快!