通过“下一个/路由器” Router.push()更改查询参数时,页面不会重新加载

时间:2019-02-27 03:10:11

标签: reactjs next.js ssr

我正在为我的应用程序使用nextjs。在更新页面的查询参数时,页面应重新呈现。由于某种原因,这没有发生。一些在线文章建议我们应该在componentWillReceiveProps中获得新的查询道具,但这也没有发生。需要帮助。

/ -----模块/my-component.js ------ /

def testPass(cryptPass):
    salt = cryptPass[0:2]
    dictFile = open('dictionary-1.txt', 'r')
    for word in dictFile.readlines():
        word = word.strip('\n')
        cryptWord = crypt.crypt(word,salt)
        if (cryptWord == cryptPass):
            print "[+] Found Password: "+word+"\n"
            return
    print "[-] Password Not Found.\n"
    return

def main():
    passFile = open('/root/homework/HomeworkW8.zip')
    for line in passFile.readlines():
        if ":" in line:
            user = line.split(':')[0]
            cryptPass = line.split(':')[1].strip(' ')
            print "[*] Crackin Password For: "+user
            testPass(cryptPass)

if __name__  == "__main__":
    main()

/ ----- pages / logs.js ------ /

import { Component } from 'react'
import Router from 'next/router'


class MyComponent extends Component {
  someEvent = () => {
    Router.push({
      pathname: '/logs',
      query: { keyword: 'blah' }
    })
  }

  render(){
    return (
      <div onClick={this.someEvent}>Click Me</div>
    )
  }
}
export default MyComponent

1 个答案:

答案 0 :(得分:0)

首先,我发现您的someEvent = keyword => {函数有些奇怪。那是实际的代码,还是您为SO创建的示例?

因为如果您这样称呼它:<div onClick={this.someEvent}>Click Me</div>,那么keyword实际上将是一个事件,而不是关键字。

似乎您没有在props组件的JSX中引用Logs。您应该尝试引用它。

第三,对withRouter(Logs)的调用是什么?那不是标准。默认情况下,在Next.js中,应该默认导出组件。

您是否正在使用自定义路由器?如果是这样,则可能无法使用'next/router'中的函数。带有自己的路由器的Next.js。

尝试默认情况下导出组件,并确保keyword是实际关键字,而不是事件。