react filter search
1.0.0
這是一個小型、不顯眼的 React 元件,用於過濾客戶端應用程式資料。
npm i react-filter-search
yarn add react-filter-search
React Filter Search 只是一個需要應用程式狀態資料的元件(需要是一個object
array
和一個輸入值。反過來,你會得到...
資料以renderResults
的形式回流,這是一個返回上述內容之一的渲染道具。因此,您將負責設定傳入資料和輸入值。
透過這種方式,React Filter Search 對於如何儲存資料以及如何處理應用程式中的使用者輸入沒有任何意見。 ?
//
/*-Other Imports-*/
//
import FilterResults from 'react-filter-search' ;
class App extends Component {
constructor ( props ) {
super ( props ) ;
this . state = {
data : [ ] ,
value : ''
} ;
}
componentWillMount ( ) {
fetch ( 'https://jsonplaceholder.typicode.com/users' )
. then ( response => response . json ( ) )
. then ( json => this . setState ( { data : json } ) ) ;
}
handleChange = event => {
const { value } = event . target ;
this . setState ( { value } ) ;
} ;
render ( ) {
const { data , value } = this . state ;
return (
< div >
< input type = "text" value = { value } onChange = { this . handleChange } / >
< SearchResults
value = { value }
data = { data }
renderResults = { results => (
< div >
{ results . map ( el => (
< div >
< span > { el . name } < / span >
< span > { el . email } < / span >
< / div >
) ) }
< / div >
) }
/ >
< / div >
) ;
}
}
神奇的事情發生在renderResults
中,它會傳回一個物件陣列。您的資料要么已根據用戶輸入進行過濾,要么沒有過濾。
過濾邏輯將迭代資料結構中任何層級的嵌套。這意味著對此的一個很好的建議是諸如用戶資料或待辦事項之類的內容,這些內容在許多層面上都沒有大量嵌套。
如果您希望僅使用某些屬性進行過濾,那麼您可以使用可選的pick
屬性。
// if each object is of the form
var obj = { name : "Leanne Graham" , username : "Bret" , email : "[email protected]" , company : { "name" : "Romaguera-Crona" } }
< SearchResults
. . .
pick = { [ 'username' , 'company.name' ] }
...
/ >
// your objects will be filtered only with the name and company.name fields
// but you can still render other values like username and email
要渲染數據,只需使用 .map() 渲染到視圖 - 數據保留在相同的結構中。傳回一些內嵌 JSX,或將每個元素輸入到呈現一些 UI 的無狀態 React 元件中。
props
姓名 | 類型 | 必需的? |
---|---|---|
value | string | true |
data | object array s | true |
renderResults | func | true |
pick | string s 的array | false |
閱讀CONTRIBUTING.md
並加入其中! ?