小编nin*_*ino的帖子

反应路由器,浏览器后退按钮后如何恢复状态?

我试图找出当用户使用后退/前进浏览器按钮导航时如何使我的React SPA应用程序保持状态.例如,用户正在填写表格,然后他前后移动并自动恢复表格.

我回顾了很多JavaScript路由器,但似乎没有一个正确解决这个问题......(甚至根本没有).

目前我正在使用React Router 4,这是我采用的模式:

  1. 当以编程方式离开页面时,我首先保存当前页面的状态history.replace(this.state); 然后我移出页面history.push(newLocation)
  2. 当一个页面组件被创建(componentWillMount)我检查this.props.location.state !== undefined,如果是,我恢复它this.setState(this.props.location.state)

我的问题是:上述模式是否正确?建议?有没有更好的和广泛采用的方式?

browser router browser-history reactjs

16
推荐指数
1
解决办法
1万
查看次数

TypeScript导入*无需创建别名

在TypeScript中,如何从文件中“导入*”而不创建任何别名?

例如,我有一个包含顶级导出功能的文件“ utils”,并且想要导入所有这些功能而无需为每个功能重新创建别名。

像这样:

import * from "utils";
Run Code Online (Sandbox Code Playgroud)

那可能吗?

import typescript

5
推荐指数
1
解决办法
2154
查看次数

React,setState 与异步更新程序参数?

有人知道在 React 中是否可以使用异步更新程序参数setState(updater)吗?我有以下不起作用的代码(f被调用但 UI 未更新):

this.setState( async (prevState) => ({
   foo: await f(prevState.someData)
}))      
Run Code Online (Sandbox Code Playgroud)

显然async参数有问题。我不得不使用这个丑陋的替代版本:

this.setState( async (prevState) => {
   this.setState({
      foo: await f(prevState.someData)
   })      
})
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来编写上面的代码?

asynchronous setstate typescript reactjs

5
推荐指数
1
解决办法
474
查看次数