reactjs - React:如何在任何导航上运行功能?
问题描述
我在导航栏(react-bootstrap navbar)上有一个搜索框。我需要清除任何导航或路由的值。我怎么做?
导航栏是一个类组件。很抱歉现在添加这个。
搜索框代码:
<FormControl
id="search-email"
onChange={this.handleSearchInput}
value={this.state.searchText}
type="text"
placeholder="Search Emails"
className="mr-sm-2"
/>
<Button onClick={this.handleSearchSubmit} variant="outline-light">
Search
</Button>
解决方案
react router
功能组件提供了一种使用react hook解决问题的简单方法。
以下代码为您提供了一个示例:
const myComponent = ({ prop1, prop2 }) => {
let [searchText, setSearchText] = useState(null);
let history = useHistory();
useEffect(() => {
setSearchText(null);
}, [history]);
return (
...
)
}
在这里,每次useEffect
运行值的变化。setSearchText
history
如果将当前组件重写为功能组件太复杂,您可以将搜索栏隔离在单独的组件中并在那里使用功能逻辑。
推荐阅读
- python - 如何在列中的单词和标点符号之间添加空格?
- c# - 尝试在 Startup ExceptionHandler 中访问 EF Core DbContext 时“无法访问已释放的上下文”
- influxdb - influxdb 插入错误:float 类型,已作为整数类型存在 drop=1
- python-2.7 - 如何在 ubuntu,python 2.7 上包含 tensorflow 的路径
- python - 为什么 googleapiclient 以不同的名称导入?
- freemarker - Apache Freemarker - 多行分割函数的循环输出
- acumatica - 你能取回在 PXProcessing<>.SetError() 期间设置的消息吗?
- angular - 嵌套的 ngFor 在 Angular 9 中无法正常工作
- kotlin - Kotlin 中的 `also` 如何返回旧值?
- r - kernel2d 函数的彩条图例