让我解释一下我要做什么:我有一个页面,其中显示了来自Web服务的信息。我还为TablePagintation
使用了Web服务分页(在url参数中发送了所需的页面),因此我不会存储不必要的信息。
现在,我也不想过滤我的数据。我不能简单地过滤从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 - react 文本字段onChange事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51966088/