reactjs - React+redux-form - 提交后重定向

标签 reactjs redux redux-form react-router-dom

我正在使用react-router-dom v4。表单提交成功后如何重定向页面?

我遵循了该教程 LINK 。然后我创建了自己的提交函数:

    const submit=({email='',password=''})=>{
  let error={};
  let isError=false;
  if(email.trim()===''){
    error.email='Required';
    isError=true;
  }
  else if(![ 'test@wp.pl' ].includes(email)){
    error.email='User does not exist';
    isError=true;
  }

  if(password.trim()===''){
    error.password='Required';
    isError=true;
  }
  else if(password!=='test'){
    error.password='Wrong password';
    isError=true;
  }
  if(isError){
    throw new SubmissionError(error);
    }
  else{

      //redirect to new page
    }
}

评论区应该有重定向功能,但我不知道怎么做。我尝试放在那里: <Redirect to="/pageAfterSubmit" push />但什么也没发生。

我在 index.js 中的浏览器路由器如下所示:

<BrowserRouter >
    <Provider store={store}>
        <div>
            <Route path="/"  component={LoginForm}></Route>
            <Route path="/markers" component={Markers}></Route>
            <Route path="/contact" component={Contact}></Route>
          </div>
    </Provider >
  </BrowserRouter>

感谢您的帮助。

最佳答案

创建一个状态变量redirectToNewPage,当 true 时进行重定向。在callback中将redirectToNewPage设置为true。

class LoginForm extends React.Component {
  state = {
    redirectToNewPage: false
  }

  const submit=({email='',password=''})=>{
     ...
     else{

     //redirect to new page
     this.setState({ redirectToNewPage: true })
     }
   }

   render() {

   // The part that makes the redirect happen
   if (this.state.redirectToNewPage) {
     return (
     <Redirect to="/pageAfterSubmit"/>
     )
   }

   return (
     ...
   )  

  }
}

关于reactjs - React+redux-form - 提交后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43698672/

相关文章:

javascript - 如何在React组件之外测试私有(private)函数

浏览器页面刷新期间 Angular 5 Ngrx 状态丢失

react-redux - React Redux Material-UI 自动完成

redux - 使用 react、redux 和 redux-form 对字段进行内联编辑。我应该这样做吗?

reactjs - 如何在 React 组件之外调度操作

reactjs - 扩展另一个接口(interface)的通用接口(interface)

javascript - useState 中没有 () 的函数( react 钩子(Hook))

reactjs - React + Flux - 应该将数据存储在组件状态还是 Prop 中?

reactjs - 采用 React-bootstrap 样式的 Formik

javascript - 无法让 redux 工具包与异步一起使用(createAsyncThunk)