下一个js查询参数不能用于静态导出

时间:2018-04-07 03:57:58

标签: reactjs nextjs

我已经导出了一个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的情况下将查询参数传递给组件的任何方法?

1 个答案:

答案 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);
}

致谢:How can I get query string values in JavaScript?