我正在創建一個包含搜索結果(SearchResultsComponent)和下拉篩選器(FiltersComponent)列表的應用程序。 SearchResultsComponent根據FiltersComponent中選擇的篩選器篩選其搜索結果列表。 SearchResultsComponent保持選擇過濾器的狀態。它通過將函數傳遞給FiltersComponent(setFilters())來完成此操作,以便可以在FiltersComponent中選擇一個過濾器,然後將過濾器保存在SearchResultsComponent狀態中。如果我只是在提交時調用函數,應該在React中使用表單標籤嗎?
我的問題是將FilterComponent的篩選器選擇部分包裝在表單標記中是否合理,因爲它並不真正提交任何內容,而只是選擇一個狀態並調用從其父級傳遞給它的函數。另一種方法是放棄表單標籤,而是使用apply filters按鈕調用回調。
這是它看起來像表單標籤
class FiltersComponent extends React.Component {
constructor(props) {
super(props)
}
setFilters(filters) {
this.props.setFilters(filters)
}
render() {
return(
<form onSubmit={this.setFilters(this.state.filters)}>
...inputs that let you select a filter from a list of filters...
<input type="submit" value="Set Filters" />
</form>
)
}
}
這是它的替代會是什麼樣
class FiltersComponent extends React.Component {
constructor(props) {
super(props)
}
setFilters(filters) {
this.props.setFilters(filters)
}
render() {
return(
...inputs that let you select a filter from a list of filters...
<input type="submit" value="Set Filters" onClick={this.setFilters(this.state.filters)} />
)
}
}
謝謝!
如果您需要自動處理輸入 - 您應該使用
這是一個很好的觀點,我沒有想到這一點。此外,我們目前只使用React,但是redux-form可能是我們未來研究的好工具。謝謝。 – Andrew