JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://wzrd.in/standalone/expect@latest"></script>
<body>

</body>

Babel + JSX

const paramObject = (queryParams = window.location.search.substring(1)) => queryParams
            .split("&")
            .map(str => {
                let [key, value] = str.split('=');
                return {[key]: decodeURI(value)};
            })
            .reduce((prev, curr) => Object.assign(prev, curr));

const singleParamTest = () => {  
  expect(paramObject('test=asdf')).toEqual({test: 'asdf'});
};

const multiParamTest = () => {  
  expect(paramObject('test=asdf&prime=123')).toEqual({
  	test: 'asdf',
  	prime: '123'
  });
  expect(paramObject('abc=foo&def=%5Basf%5D&xyz=5')).toEqual({abc: "foo", def: "[asf]", xyz: "5"});
};

const emptyParamTest = () => {
  expect(paramObject('')).toEqual({});
};

[singleParamTest, multiParamTest].forEach(test => test());
document.body.innerHTML = 'All tests passed';