【发布时间】:2018-02-21 04:46:05
【问题描述】:
我正在使用与 react-router 4.x 兼容的下一个 (5.0.0-alpha.6) 版本的 react-router-redux。 我尝试在重定向到下一页时在 url 上设置参数。
每次移动到下一页。我意识到它调用了@LOCATION_CHANGE 2 次,in the second time it removes search value。如果我从按钮事件处理它,它工作正常
import { requireAuth } from '../components/AuthenticatedComponent'
import createHistory from 'history/createBrowserHistory'
const history = createHistory()
return (
<ConnectedRouter history={history}>
<div className="container">
<Header />
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={requireAuth(About)} />
<Route path="/login" component={Login} />
<Route component={NotFound} />
</Switch>
</div>
</ConnectedRouter>
)
AuthenticatedComponent.js
import { push } from 'react-router-redux'
export function requireAuth(Component) {
class AuthenticatedComponent extends React.Component {
componentWillMount() {
this.checkAuth(this.props.isAuthenticated);
}
componentWillReceiveProps(nextProps) {
this.checkAuth(nextProps.isAuthenticated);
}
checkAuth(isAuthenticated) {
if (!isAuthenticated) {
let redirectAfterLogin = this.props.location.pathname;
this.props.dispatch(push({pathname: "/login", search:`?redirect=${redirectAfterLogin}`}))
}
}
//....
}
【问题讨论】:
标签: javascript reactjs redux react-redux react-router-redux