Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应+;Redux状态更改时路由器重定向的最佳实践_Javascript_Reactjs_Redux_React Redux_React Router - Fatal编程技术网

Javascript 反应+;Redux状态更改时路由器重定向的最佳实践

Javascript 反应+;Redux状态更改时路由器重定向的最佳实践,javascript,reactjs,redux,react-redux,react-router,Javascript,Reactjs,Redux,React Redux,React Router,我正在使用react路由器dom,并尝试将其与redux绑定。我想在行动中重定向,但不知道,最好的方法是什么。我需要使用history.push()还是其他什么?也许react对此有自己的方法 我的组件容器代码: class ConnectedAppContent extends React.Component { render() { return ( <div id="content"> <Ro

我正在使用react路由器dom,并尝试将其与redux绑定。我想在行动中重定向,但不知道,最好的方法是什么。我需要使用history.push()还是其他什么?也许react对此有自己的方法

我的组件容器代码:

class ConnectedAppContent extends React.Component {
    render() {
        return (
            <div id="content">
                <Router>
                    <Switch>
                        <PropsRoute path="/login" component={LoginForm} doLogin={this.props.doLogin} />
                        <PrivateRoute path="/scan" redirectTo="/login" component={Scanner} token={this.props.token} />
                        <PrivateRoute path="/result" redirectTo="/login" component={ParsedQRCode} token={this.props.token} />
                    </Switch>
                </Router>
            </div>
        );
    }
}

const mapStateToProps = state => {
    return {
        token: state.token,
        parsedQRCode: state.parsedQRCode
    }
}

const mapDispatchToProps = dispatch => ({
    doLogin: token => dispatch(doLogin(token))
});

export const AppContent = connect(mapStateToProps, mapDispatchToProps)(ConnectedAppContent);
class ConnectedAppContent扩展了React.Component{
render(){
返回(
);
}
}
常量mapStateToProps=状态=>{
返回{
令牌:state.token,
parsedQRCode:state.parsedQRCode
}
}
const mapDispatchToProps=调度=>({
doLogin:token=>dispatch(doLogin(token))
});
export const AppContent=connect(mapStateToProps,mapDispatchToProps)(ConnectedAppContent);

除了history.push()之外,我不知道还有其他方法

const stateChange = () => {
  this.props.doLogin();
  this.props.history.push("/routetoredirect")
}

除了history.push()之外,我不知道还有其他方法

const stateChange = () => {
  this.props.doLogin();
  this.props.history.push("/routetoredirect")
}

如果您想在按钮单击或提交时路由到某个事件上的特定路径,可以使用react router dom提供的重定向或链接

此外,react router可与redux配合使用,但在某些情况下,它不能与redux配合使用,您可以使用withRouter包装您的组件,然后您可以通过以下方式轻松推送路由:

history.push('/your-route')

如果您想在按钮单击或提交时路由到某个事件上的特定路径,可以使用react router dom提供的重定向或链接

此外,react router可与redux配合使用,但在某些情况下,它不能与redux配合使用,您可以使用withRouter包装您的组件,然后您可以通过以下方式轻松推送路由:

history.push('/your-route')
我会的

import {Redirect} from 'react-router-dom';
在渲染方法中,您可以:

  render() {

    if (yourRedirectState) {
      return <Redirect to='/route'/>;
    }   
}
render(){
如果(你的州){
回来
}   
}
我会的

import {Redirect} from 'react-router-dom';
在渲染方法中,您可以:

  render() {

    if (yourRedirectState) {
      return <Redirect to='/route'/>;
    }   
}
render(){
如果(你的州){
回来
}   
}