当传递的参数包含?(问号)时,使用this.props.match.params获得的值不是想要的,因为此时?(问号)被当做是查询字符串(querystring)了,怎样处理这种情况啊?
例如/:id 传递的id实际值为"12?34",此时this.props.match.params.id的值为12,而不是"12?34"
当传递的参数包含?(问号)时,使用this.props.match.params获得的值不是想要的,因为此时?(问号)被当做是查询字符串(querystring)了,怎样处理这种情况啊?
例如/:id 传递的id实际值为"12?34",此时this.props.match.params.id的值为12,而不是"12?34"
你可以尝试一下非常简短又好用的库:query-string。
const queryString = require('query-string');
console.log(location.search);
//=> '?foo=bar'
const parsed = queryString.parse(location.search);
console.log(parsed);
//=> {foo: 'bar'}
console.log(location.hash);
//=> '#token=bada55cafe'
const parsedHash = queryString.parse(location.hash);
console.log(parsedHash);
//=> {token: 'bada55cafe'}
parsed.foo = 'unicorn';
parsed.ilike = 'pizza';
const stringified = queryString.stringify(parsed);
//=> 'foo=unicorn&ilike=pizza'
location.search = stringified;
// note that `location.search` automatically prepends a question mark
console.log(location.search);
//=> '?foo=unicorn&ilike=pizza'
4 回答1.6k 阅读
2 回答1k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答927 阅读✓ 已解决
1 回答660 阅读✓ 已解决
2 回答815 阅读✓ 已解决
2 回答972 阅读
encodeURIComponent
然后去decodeURIComponent