javascript - 反应文本字段 onChange 事件
问题描述
让我解释一下我要做什么:我有一个页面,它显示来自网络服务的信息。我还为我使用了网络服务分页(在 url 参数中发送所需的页面),TablePagintation
因此我不会存储不必要的信息。
现在我也不想过滤我的数据。我不能简单地过滤从 web 服务返回的结果,因为它只包含 10 条记录(因为分页方法),所以我需要再次调用 web 服务,但这次使用搜索查询,它将返回过滤结果(也应该通过 tablePagintation 显示分页)
问题是,我不知道如何在调用 Web 服务的方法内访问我当前的状态过滤器..
我的文本字段:
<TextField
id="filter"
helperText={labels.filterHelperText}
value={props.brokersListFilter}
onChange={props.setBrokersListFilter}
className={props.classes.textField}/>
我的setBrokersListFilter
:
export const setBrokersListFilter = (event) => {
return dispatch => {
dispatch({
type: actionNames.SET_BROKERSLIST_FILTER,
brokersListFilter: event.target.value
})
}
}
到目前为止,它正确更新了状态,但现在我需要调用我的方法getBrokers
,使用状态过滤器来调用 Web 服务。
export const getBrokers = (page) => {
return async dispatch => {
try {
filter = filter ? filter : '' // HERE I WANT THE STATE FILTER AS DEFAULT
dispatch({type: appActionNames.TOGGLE_LOADING})
const res = await fetch(`/...?pageNumber=${page + 1}&pageSize=10&searchQuery=${filter}`, {
method: 'GET',
headers: {
"Accept": "application/json; charset=utf-8"
}
})
.....
那么如何在这些方法中访问状态,这样我就不会覆盖现有的过滤器(在更改页面或过滤器时)
我能做些什么 ?
解决方案
我已经设法通过添加一个调用这两种方法的处理程序来解决这个问题。
onChange
处理程序:
<TextField
id="filter"
helperText={labels.filterHelperText}
value={props.brokersListFilter}
onChange={props.onFilterChange }
className={props.classes.textField}/>
........
onFilterChange = (event) => {
this.props.setBrokersListFilter(event)
this.props.getBrokers(this.props.brokersListPage, this.props.brokersListFilter)
}
推荐阅读
- javascript - 我应该如何强制 TypeScript 理解这个数组中不会有任何空值?
- visual-studio - DotNet 5 ClickOnce 缺少程序集
- java - Java & Excel - 公式更新
- tensorflow - Keras 模型编译设置(查看/更改)
- javascript - Odoo 13 - 将第二个 sum_field 添加到看板列 ProgressBar
- haskell - 如何将函数映射到列表并在满足条件时停止并告诉我它是否停止或到达末尾?
- php - 单击链接时如何将网址发布到变量?
- laravel - 错误:NoSuchMethdError:La case '_InternalLinkedHashMap
' no tiene no tiene captador de instancias 'fecha' - vue.js - Vue 中的 FilePond - 自定义标题
- database - 客户、产品和供应商的数据库模式