reactjs - React Hooks / Redux 和 onChange 事件
问题描述
我有以下问题:
我正在使用带有反应钩子和 redux-persist 的 react redux。
如果我打开我的反应应用程序,将加载可用的过滤器(使用对象)。
当我使用一些具有 onChange 事件的输入字段并且这些 onChange 事件触发过滤时,过滤不起作用,因为此时过滤器值不存在。
例如:
onChange = {
e => {
item.dispatchFn(e);
}
}
dispatchFn 是:
dispatch(Action.setEmployment(data));
所以问题是:在渲染组件和加载过滤器之前触发 onChange 事件。
我该如何解决这个问题?获得解决方案的常用方法是什么?
解决方案
您可以简单地将 onChange 函数的工作与 if 语句(使用类似 this.state.loaded 的内容)包装起来,然后您可以使用 componentDidMount 挂钩来更改状态并允许 onChange 事件完成它的正常工作。例如:
componentDidMount() {
this.setState({
loaded: true
});
}
onChange = e => {
if(this.state.loaded){
/* do your onChange job
}
}
对于功能组件:
记得从 React 导入 setState:
import { setState } from 'react'
然后设置状态并在渲染后使用 useEffect 处理代码(不要忘记设置状态)
const [state, setState] = useState({loaded: false});
useEffect(() => {
if(!state.loaded) setState({ loaded: true
});
});
更新您的 onChange 函数:
onChange = {
e => {
if(state.loaded){
item.dispatchFn(e);
}
}
}
推荐阅读
- python - OpenCV:具有大值的奇数投影
- ruby - 为什么这两个较小的循环比包含相同指令的单个循环慢得多?
- ruby-on-rails - Jelastic CMD /入口点中的bundle exec puma错误
- ruby - 如何使用数组作为值对这个散列进行排序?
- tcl - TCL:将proc的输出重定向到文件
- xml - XSLT - 克隆 XML 过滤掉数组元素
- mongodb - 我有一个包含可能值 A 和 B 的数组的文档,如何根据它将其值添加到数组中?
- javascript - 每当添加反应时,如何执行代码块?(discord.js)
- c++ - 具有互斥锁缓存的类的移动构造函数的最佳实践
- python - 美汤刮-取空集