reactjs - 如何在 onSubmit 时使用功能组件渲染页面?
问题描述
function Header() {
const [search, setSearch] = useState('');
const [{search_results}, dispatch] = useStateValue();
表单提交时运行的函数:
function search_item(event){
event.preventDefault();
if(search_results.length===0){
alert("No results Found")
}else{
alert("Found Something");
// render a search results page;
}
}
我想在按 Enter 后呈现一个类似“/searchResults”的页面,其中包含我的 search_results 状态值。
return (
<div className="header">
<img className="header__logo" src="" alt="" />
<div className='header__searchBox'>
<form onSubmit={search_item} className="header__search">
<input placeholder="Input The Keywords" onChange = {event => setSearch(event.target.value)}/>
<SearchIcon className="header__searchIcon"/>
</form>
解决方案
您必须声明一个用 null/undefined 初始化的状态(例如结果)。调用search_item
并将搜索结果设置为该状态。然后使用条件渲染来渲染结果(如果存在)。
假设您有一个设置为结果的 searchResult 状态,在您创建了一个提供结果项并返回渲染组件的渲染器函数之后,您可以为它进行条件渲染:
<div>
<form ...>
...
</form>
{searchResult && (
<div>
{searchResults.map(renderResultItem)}
</div>
)}
</div>
推荐阅读
- sparql - DBpedia 图形提取
- sql-server - 未使用多列非聚集索引
- reactjs - React IE 8 与 axios 的兼容性问题
- c# - CRM Online RetrieveMultiple 与 OptionSetValueCollection 条件
- java - 在java中检查多个布尔条件
- maven - Spring应用程序立即关闭
- vue.js - vue-cli 3.x - 更改 src 和公共目录
- php - 亚马逊转录“找不到操作:StartTranscriptionJob”
- android - 服务被销毁时如何关闭服务中的后台线程
- material-ui - 如何制作 Material UI 布局