我正在通过创建一个简单的2页搜索引擎来学习NextJS。 索引页只是一个输入字段和提交按钮,它传递诸如"/search?q=nissan maxima"之类的参数,我使用"router.query.q"访问搜索页面上的参数。
与任何搜索引擎一样,当前查询应显示在搜索结果页面上的输入字段中,按"后退按钮"应使用以前的查询参数填充输入字段。我能够实现我想要的排他性,除了由于以下代码行我无法删除现有的输入值:
<input type="text" id="search " name="q" value={query || props.query} onChange={handleChange}/>
我需要另一种方法来处理value={query || props.query}
这是我搜索的代码.js
import {useRouter} from 'next/router';
import React, {useState} from 'react';
const SearchForm = props => {
const [query, setQuery] = useState(props.query);
const handleChange = event => setQuery(event.target.value);
return (
<div>
<form action={`/search?${props.query}`}>
<input type="text" id="search " name="q" value={query || props.query}
onChange={handleChange}/>
<input type="submit" value="Submit"/>
</form>
</div>
);
};
const Search = () => {
const router = useRouter();
return (
<SearchForm query={router.query.q}/>
);
};
export default Search;
提前感谢任何帮助,非常感谢。
我能够使用以下代码解决我的问题:
value={query <= query ? query : props.query}