reactjsnext.jsnext-router

How to hide query params from the URL while using router.push?


I'm passing some data from one page to another via query params but I want to hide the query from the URL.

Here is my code.

import { useRouter } from "next/router";

const handleFormSubmit = async (values) => {
    const res = await AuthService.login(values.email, values.password);

    if (res.status === 200) {
   
       if (res.data.is_phone_number_exists === 1 && res.data.is_phone_number_verified === 0) {
        router.push({
          pathname: '/otp-verification',
          query: { email: values.email, password: values.password, phone_number: res.data.phone_number} //I want hide this query part from the url
        }) 
      }
    }
  }

How to hide the query params from the URL while using the router.push()? Or is there any other way for doing the same thing?


Solution

  • When using next/router, you can pass query parameters without being visible on the address bar using the second argument as in the router.push call.

    router.push({
        pathname: '/otp-verification',
        query: { email: values.email, password: values.password, phone_number: res.data.phone_number }
    }, '/otp-verification')