ตอบสนองการรวมสำหรับไลบรารีการค้นหาข้อความแบบเต็มฝั่งไคลเอ็นต์ MiniSearch
ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง React และ MiniSearch เวอร์ชันที่เข้ากันได้แล้ว
จากนั้นทำการติดตั้งผ่าน NPM หรือ Yarn :
# With NPM:
npm install react-minisearch
# Or with Yarn:
yarn add react-minisearch
มีสามวิธีหลักในการใช้ react-minisearch
: hook useMiniSearch
, ส่วนประกอบที่มีลำดับสูงกว่า withMiniSearch
หรือส่วนประกอบ wrapper WithMiniSearch
ทั้งสามวิธีรับข้อโต้แย้งต่อไปนี้ (หรืออุปกรณ์ประกอบฉากสำหรับส่วนประกอบ wrapper):
add
/ addAll
/ remove
/ removeAll
/ discard
ฯลฯMiniSearch
import { useMiniSearch } from 'react-minisearch'
// Documents to search amongst
const documents = [
{ id : 1 , name : 'Agata' } ,
{ id : 2 , name : 'Finn' } ,
// …etc
]
// See MiniSearch for documentation on options
const miniSearchOptions = { fields : [ 'name' ] }
const MyComponent = ( ) => {
const { search , searchResults } = useMiniSearch ( documents , miniSearchOptions )
const handleSearchChange = ( event ) => {
search ( event . target . value )
}
return (
< div >
< input type = 'text' onChange = { handleSearchChange } placeholder = 'Search…' / >
< ol >
< h3 > Results: < / h3 >
{
searchResults && searchResults . map ( ( result , i ) => {
return < li key = { i } > { result . name } < / li >
} )
}
< / ol >
< / div >
)
}
import { withMiniSearch } from 'react-minisearch'
const MyComponent = ( { search , searchResults } ) => {
const handleSearchChange = ( event ) => {
search ( event . target . value )
}
return (
< div >
< input type = 'text' onChange = { handleSearchChange } placeholder = 'Search…' / >
< ol >
< h3 > Results: < / h3 >
{
searchResults && searchResults . map ( ( result , i ) => {
return < li key = { i } > { result . name } < / li >
} )
}
< / ol >
< / div >
)
}
// Documents to search amongst
const documents = [
{ id : 1 , name : 'Agata' } ,
{ id : 2 , name : 'Finn' } ,
// …etc
]
// See MiniSearch for documentation on options
const miniSearchOptions = { fields : [ 'name' ] }
const MyComponentWithSearch = withMiniSearch ( documents , miniSearchOptions , MyComponent )
import { WithMiniSearch } from 'react-minisearch'
// Documents to search amongst
const documents = [
{ id : 1 , name : 'Agata' } ,
{ id : 2 , name : 'Finn' } ,
// …etc
]
// See MiniSearch for documentation on options
const miniSearchOptions = { fields : [ 'name' ] }
const MyComponent = ( ) => (
< WithMiniSearch documents = { documents } options = { miniSearchOptions } >
{
( { search , searchResults } ) => {
const handleSearchChange = ( event ) => {
search ( event . target . value )
}
return (
< div >
< input type = 'text' onChange = { handleSearchChange } placeholder = 'Search…' / >
< ol >
< h3 > Results: < / h3 >
{
searchResults && searchResults . map ( ( result , i ) => {
return < li key = { i } > { result . name } < / li >
} )
}
< / ol >
< / div >
)
}
}
< / WithMiniSearch >
)
ชุดอุปกรณ์ประกอบฉากที่สมบูรณ์ซึ่งจัดทำโดย react-minisearch
จะเหมือนกันสำหรับทั้งสามวิธี ( useMiniSearch
, withMiniSearch
หรือ WithMiniSearch
):
search(query: string, searchOptions?: SearchOptions) => void
: ฟังก์ชั่นที่จะเรียกใช้เพื่อทำการค้นหา
searchResults: T[] | null
: อาร์เรย์ของผลการค้นหา หรือ null
เมื่อไม่มีการค้นหาหรือล้างการค้นหา
rawResults: SearchResult[] | null
: อาร์เรย์ของผลการค้นหาดิบจาก MiniSearch รวมถึงคะแนนและข้อมูลการแข่งขัน หรือ null
เมื่อไม่มีการค้นหาหรือล้างการค้นหา
clearSearch() => void
: ฟังก์ชันที่จะเรียกใช้เพื่อล้างการค้นหา (ตั้งค่า searchResults
เป็น null
)
autoSuggest(query: string, searchOptions?: SearchOptions) => void
: ฟังก์ชั่นที่จะเรียกใช้เพื่อรับคำแนะนำอัตโนมัติ
suggestions: Suggestion[] | null
: อาร์เรย์ของคำแนะนำอัตโนมัติ หรือ null
เมื่อไม่ได้ใช้หรือล้างคำแนะนำอัตโนมัติ
clearSuggestions() => void
: ฟังก์ชั่นที่จะเรียกใช้เพื่อล้างข้อเสนอแนะ (ตั้งค่า suggestions
เป็น null
)
add(document: T) => void
: ฟังก์ชั่นเพิ่มเอกสารใหม่ลงในดัชนี
addAll(documents: T[]) => void
: ฟังก์ชั่นเพื่อเพิ่มเอกสารใหม่หลายฉบับลงในดัชนีเป็นกลุ่ม
addAllAsync(documents: T[], options?: object) => Promise<void>
: เหมือนกับ addAll
แต่ทำงานแบบอะซิงโครนัสและเป็นกลุ่มเพื่อหลีกเลี่ยงการบล็อก UI
remove(document: T) => void
: ฟังก์ชันเพื่อลบเอกสารออกจากดัชนี
removeById(id: any) => void
: ฟังก์ชันเพื่อลบเอกสารออกจากดัชนีด้วย ID
removeAll(documents?: T[]) => void
: ฟังก์ชั่นเพื่อลบเอกสารหลายฉบับหรือเอกสารทั้งหมดออกจากดัชนี
discard(id: any) => void
: ละทิ้งเอกสารด้วย ID ของมัน (เหมือนกับ removeById
)
discardAll(ids: readonly any[]) => void
: ทิ้งเอกสารหลายฉบับพร้อมกันด้วย ID ของพวกเขา
replace(document: T) => void
: แทนที่เอกสารที่มีอยู่ด้วยเวอร์ชันใหม่
isIndexing: boolean
: ตั้งค่าเป็น true
เมื่อกำลังสร้างดัชนีผ่าน addAllAsync
มิฉะนั้นจะ false
miniSearch: MiniSearch
: อินสแตนซ์ MiniSearch
สำหรับกรณี (พบไม่บ่อย) เมื่อจำเป็นต้องใช้โดยตรง
ในรายการนี้ ประเภท T
เป็นประเภททั่วไปที่อ้างอิงถึงประเภทของเอกสารที่กำลังจัดทำดัชนี
อุปกรณ์ประกอบฉากเหล่านี้จำนวนมากสอดคล้องกับวิธีการในคลาส MiniSearch
ดังที่บันทึกไว้ในไลบรารี MiniSearch
ตรวจสอบไดเร็กทอรี examples
เพื่อดูตัวอย่างการใช้งานที่สมบูรณ์ หากต้องการเรียกใช้แอปตัวอย่างในเครื่อง:
cd
ไปยังไดเร็กทอรี examples
yarn install
(หรือ npm install
)yarn start
(หรือ npm run start
)