Как получить значения URL с помощью window.location.ha sh и reactjs? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть этот URL http://localhost: 3000 / # / консультация /? Idc = xxxd? Iduser = Hyfzjg2 , и я хочу получить значение id c и iduser для использования на моем API с ReactJs.

Я пробую это:

let isInitialized = false;
const initialValues = {};
const initValues = () => {
    if (isInitialized === false) {
        const searchParams = new URLSearchParams(window.location.hash);
        const values = [
            { urlKey: "idc", stateKey: "idC" },
            { urlKey: "iduser", stateKey: "idUser" },
        ];
        values.forEach(item => {
            const urlValue = searchParams.get(item.urlKey)
            if (urlValue) {
                initialValues[item.stateKey] = urlValue;
            }
        });
        isInitialized = true;
    }
    return initialValues;
};

console.log(initValues())

Когда я запускаю его, я получаю {} пустое значение.

Как я могу получить значение idc и iduser?

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Я думаю, что ваш путь не построен правильно:

Если у вас есть путь http://localhost:3000/consultation и вы хотите добавить строку запроса, это будет http://localhost:3000/consultation?idc=xxxx и window.location.search будет ?idc=xxxx затем.

# - это селектор для элемента на вашей странице, например # section = 4, поэтому вы обычно переходите к этому разделу. Это будет выглядеть так:

http://localhost:3000/consultation#section=4 и window.location.hash будет "# section = 4"

0 голосов
/ 03 апреля 2020

Я исправляю это, и оно хорошо работает:

const  getUrlParams = (search) =>{
  let hashes = search.slice(search.indexOf('?') + 1).split('&')
  return hashes.reduce((params, hash) => {
      let [key, val] = hash.split('=')
      return Object.assign(params, {[key]: decodeURIComponent(val)})
  }, {})
}

console.log(getUrlParams(window.location.hash))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...