在ionic-4 react中自动导航到所需页面

如何解决在ionic-4 react中自动导航到所需页面

我有一个页面,上面写着输入您的邮件ID来更改密码,在输入邮件ID并点击“提交”按钮后,我希望用户重定向到另一页,直到现在导航为止,我在做类似的事情

const redirect = useCallback(() => navigate("/login"),[navigate]);
redirect()

但是似乎它们只能在功能组件中使用,我想像在使用redux一样在我的动作创建器中重定向用户

这是我的代码

const ForgotPassword: React.FC<Props> = (props) => {
  const {
    register,handleSubmit,errors,control,setValue,getValues,} = useForm();
  const { navigate } = useContext(NavContext);
  const [email,setEmail] = useState("");
  const dispatch = usedispatch();

  const modal = useSelector((state: RootState) => {
    return { modal: state.modal };
  });
  const error = useSelector((state: RootState) => {
    return { error: state.error.iserror };
  });

  const onSubmit = (data: any) => {
    console.log(errors.keys);
    console.log(data);
    dispatch(changePassword(data.email));

  };
  const redirect = useCallback(() => navigate("/set-password"),[navigate]);
  return (
    <div>
      <Layout title={"Forgot Password"} backButton={false} backHref={""} />
      <IonContent>
        <div className="forgot-content">
          <form onSubmit={handleSubmit(onSubmit)}>
            <IonItem>
           
              <IonLabel position="stacked" className="otpMail">
                Email
              </IonLabel>

              <Controller
                render={({ onChange,onBlur,value }) => (
                  <IonInput
                    placeholder="Enter your email"
                    onIonChange={onChange}
                  />
                )}
                control={control}
                name="email"
                defaultValue=""
                rules={{
                  required: true,pattern: {
                    value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,message: "Error",},}}
              />
              {_.get("email.type",errors) === "required" && (
                <p className="errorWarning">This field is required</p>
              )}
              {_.get("email.type",errors) === "pattern" && (
                <p className="errorWarning">Email address is not valid</p>
              )}
            </IonItem>

            <div className="verifyButton">
              <IonButton type="submit" expand="block">
                Get OTP
              </IonButton>
            </div>
          </form>
        </div>
      </IonContent>
    </div>
  );
};

export default ForgotPassword;

action creater.js

export const changePassword = (email: string) => async (dispatch: any) => {
  axios.post("http://localhost:4000/change_password",email).then((res) => {
    console.log(res);
    if (res.data.status == 200) {
      dispatch({
        type: CHANGE_PASSWORD,payload: res.data.msg,});


     /// I want to redirect user at this point to '/set-password'///


    } else if (res.data.status == 600) {
      dispatch({
        type: SHOW_MODAL_Failed_TASK,});
    } else {
      dispatch(errorActions());
    }
  });
};

App.tsx

const App: React.FC = () => (
  <IonApp>
    <IonReactRouter>
      <IonRouterOutlet id="menu">
        <Route path="/signup" component={Signup} exact={true} />
        <Route path="/" component={Home} exact={true} />
        <Route path="/verify" component={Verify} exact={true} />
        <Route path="/login" component={Login} exact={true} />
        <Route
          path="/forgot-password"
          component={forgotPassword}
          exact={true}
        />
        <Route path="/set-password" component={setPassword} exact={true} />
      </IonRouterOutlet>
    </IonReactRouter>
  </IonApp>
);

export default App;

Index.tsx

ReactDOM.render(
  <Provider store={store}>
    <PersistGate loading={null} persistor={persistor}>
      <App />
    </PersistGate>
  </Provider>,document.getElementById("root")
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?