重新加载页面后立即填写字段

Fill the field immediately after reloading the page

我的 NextJS 应用程序中有搜索页面。 URL 示例 - /search?q=Naaarutoo。例如,在重新加载后,我只想将 "Naaarutoo" 设置为输入值(我知道如何将查询参数设置为输入值IMMEDIATELY.

如果我们仔细观察,我们会发现该字段未满足:

我认为这是因为服务器端 returns 对客户端来说很简单 HTML 并且只有在那之后才开始客户端执行。如果我错了,请纠正我。

import React from 'react'
import {Formik, Form, Field} from 'formik'

const Search = ({router: {query}}) => (
  <Formik enableReinitialize onSubmit={() => {

  }} initialValues={{q: query.q || ''}} render={() => (
    <Form>
      <Field name='q' type="search" placeholder="Find something"/>
    </Form>
  )}/>
)

export default withPageRouter(Search)

最后更新:

我不知道为什么但它有效(我不记得我做了什么(͡°͜ʖ͡°)),好的,谢谢大家的帮助

您需要 getInitialProps 才能使用查询

import React from 'react'
import { Formik, Form, Field } from 'formik'

const Search = ({ query }) => (
    <Formik onSubmit={() => { }} initialValues={{ q: query.q || '' }} render={() => (
        <Form>
            <Field name='q' type="search" placeholder="Find something" />
        </Form>
    )} />
)

Search.getInitialProps = ({ query }) => {
    return { query }
}

export default Search

我检查了一下,对我来说没问题。