我已经导出了一个NextJs应用程序。当我将其导出到静态应用程序时,URL参数在服务器上不起作用。 (导出到静态HTML应用程序)
例如网址:http://app.domain.com/?p=demo&u=udemo
export default ({ url: { query: { p ,u } } }) => (
<div>
<Ads pub={p} user={u} />
</div>
)
p和u值不会传递给使用默认值的组件。在不使用节点js的情况下将查询参数传递给组件的任何方法?
答案 0 :(得分:1)
可以使用RegExp从URL中获取p和u的值。这些函数放在组件内部。
getParameterByName(name, url) {
if (!url) url = window.location.pathname;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
componentDidMount(){
const url = window.location.href;
const pub=this.getParameterByName('pub',url);
const user=this.getParameterByName('user',url);
}