{"_id":"@aiao/rxdb-plugin-search-react","_rev":"6-af27cf3a5c8056bb1e85c435537c34eb","name":"@aiao/rxdb-plugin-search-react","dist-tags":{"latest":"0.0.25"},"versions":{"0.0.20":{"name":"@aiao/rxdb-plugin-search-react","version":"0.0.20","_id":"@aiao/rxdb-plugin-search-react@0.0.20","maintainers":[{"name":"aiao","email":"hero63418@gmail.com"}],"dist":{"shasum":"592948df93876d328cad451b5d229ec36faf3311","tarball":"https://registry.npmjs.org/@aiao/rxdb-plugin-search-react/-/rxdb-plugin-search-react-0.0.20.tgz","fileCount":15,"integrity":"sha512-33tB6FuRN81kyJuItQIyRi5aEh9ruxrHs7nAgDt9S9JRW5nH9ztzptQ5PkrzG5W6ofrMjL3DWNVD6kXmUvqeEg==","signatures":[{"sig":"MEYCIQDg9YKaJv2QZP7SRIfILgCv270Zi7OfavL7tF5+HPHVhAIhAIpTCfD4IbO8gU3mlQ8eZZpO2pWppfuSPFmenq4NXT0M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18314},"main":"./dist/index.js","type":"module","_from":"file:aiao-rxdb-plugin-search-react-0.0.20.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@aiao/source":"./src/index.ts"},"./package.json":"./package.json"},"_npmUser":{"name":"aiao","email":"hero63418@gmail.com"},"_resolved":"/private/var/folders/1s/1sk5kvms7jj4z6glj40__v300000gn/T/21dd9cca70dbc6b5339edecca3f044fa/aiao-rxdb-plugin-search-react-0.0.20.tgz","_integrity":"sha512-33tB6FuRN81kyJuItQIyRi5aEh9ruxrHs7nAgDt9S9JRW5nH9ztzptQ5PkrzG5W6ofrMjL3DWNVD6kXmUvqeEg==","_npmVersion":"11.9.0","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@aiao/rxdb-plugin-search":"0.0.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.2","react":">=18.0.0","@aiao/rxdb":"*","@aiao/rxdb-plugin-search":"0.0.20"},"_npmOperationalInternal":{"tmp":"tmp/rxdb-plugin-search-react_0.0.20_1779246564442_0.3604197968343228","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@aiao/rxdb-plugin-search-react","version":"0.0.21","_id":"@aiao/rxdb-plugin-search-react@0.0.21","maintainers":[{"name":"aiao","email":"hero63418@gmail.com"}],"dist":{"shasum":"4b9ed77bbc4ec59ab57585695dd66b12ff213b8a","tarball":"https://registry.npmjs.org/@aiao/rxdb-plugin-search-react/-/rxdb-plugin-search-react-0.0.21.tgz","fileCount":22,"integrity":"sha512-wO69rBVnkOKS6VytV1ao5hc721K3My0kKFbB98VN+73Wh9MXTMm/9J+bl7EkRDrxcZfXxmwHg20JSXoJh9AWQA==","signatures":[{"sig":"MEUCIQC3Q0f9heec7nbGxcFeYxDEYu56f4//GUJ66VfqhLOENgIgXXAV2aTijbdLLA17iod7yjEXiikkyQUJzmOROES3m28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297915},"main":"./dist/index.js","type":"module","_from":"file:aiao-rxdb-plugin-search-react-0.0.21.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@aiao/source":"./src/index.ts"},"./package.json":"./package.json"},"_npmUser":{"name":"aiao","email":"hero63418@gmail.com"},"_resolved":"/private/var/folders/1s/1sk5kvms7jj4z6glj40__v300000gn/T/17c52622b62dedb881a599206ecce4fb/aiao-rxdb-plugin-search-react-0.0.21.tgz","_integrity":"sha512-wO69rBVnkOKS6VytV1ao5hc721K3My0kKFbB98VN+73Wh9MXTMm/9J+bl7EkRDrxcZfXxmwHg20JSXoJh9AWQA==","_npmVersion":"11.16.0","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@aiao/rxdb-plugin-search":"0.0.21"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.2","react":"^19.2.7","@aiao/rxdb":"*","@aiao/rxdb-plugin-search":"0.0.21"},"_npmOperationalInternal":{"tmp":"tmp/rxdb-plugin-search-react_0.0.21_1784362981530_0.278636391861937","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@aiao/rxdb-plugin-search-react","version":"0.0.22","_id":"@aiao/rxdb-plugin-search-react@0.0.22","maintainers":[{"name":"aiao","email":"hero63418@gmail.com"}],"dist":{"shasum":"bde6d202ba52bce868fbb16ed22a28804d3d3a76","tarball":"https://registry.npmjs.org/@aiao/rxdb-plugin-search-react/-/rxdb-plugin-search-react-0.0.22.tgz","fileCount":17,"integrity":"sha512-JeT070a65DLIOL1HGPJvp1dw0RD06/db6ymJlSQV13W2s4YKXNUxGpfwLa2cn9iGS2Alr7Q5D2Occ5T3l1ODEA==","signatures":[{"sig":"MEYCIQCC/rNlXXpZ2DklOPYbd7jFUkKNg01491fYFBk2joIVCAIhAK+VHTmgFPSywJaXYAbN6zlY+gBqksfsh9bhh++5RpwA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24850},"main":"./dist/index.js","type":"module","_from":"file:aiao-rxdb-plugin-search-react-0.0.22.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@aiao/source":"./src/index.ts"},"./package.json":"./package.json"},"_npmUser":{"name":"aiao","email":"hero63418@gmail.com"},"_resolved":"/private/var/folders/1s/1sk5kvms7jj4z6glj40__v300000gn/T/af07c9009cdfc1212e1deba09aa811b5/aiao-rxdb-plugin-search-react-0.0.22.tgz","_integrity":"sha512-JeT070a65DLIOL1HGPJvp1dw0RD06/db6ymJlSQV13W2s4YKXNUxGpfwLa2cn9iGS2Alr7Q5D2Occ5T3l1ODEA==","_npmVersion":"10.9.2","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@aiao/rxdb-plugin-search":"0.0.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.2","react":"^19.2.7","@aiao/rxdb":"*","@aiao/rxdb-plugin-search":"0.0.22"},"_npmOperationalInternal":{"tmp":"tmp/rxdb-plugin-search-react_0.0.22_1785482916031_0.273280400976015","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@aiao/rxdb-plugin-search-react","version":"0.0.23","_id":"@aiao/rxdb-plugin-search-react@0.0.23","maintainers":[{"name":"aiao","email":"hero63418@gmail.com"}],"dist":{"shasum":"b0f75c2bc03a0ab1357dab76d9660e1174293d49","tarball":"https://registry.npmjs.org/@aiao/rxdb-plugin-search-react/-/rxdb-plugin-search-react-0.0.23.tgz","fileCount":17,"integrity":"sha512-qWphY9K5KswSjsfkEq4Rxe+rF2fO/6imfnH1LKucawwvCMMBBM89RPHeiP7oavLr7d7xG7PUsaybHJr2Pcjvug==","signatures":[{"sig":"MEYCIQCKSAliKgroWzinY6b+5hvE95I7PkvCwPCxoXdGv7Dw5AIhAIr1Vq71Ias9Uzq/6ceEFzjMq8VVJzf78fV5F678nZdZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24850},"main":"./dist/index.js","type":"module","_from":"file:aiao-rxdb-plugin-search-react-0.0.23.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","@aiao/source":"./src/index.ts"},"./package.json":"./package.json"},"_npmUser":{"name":"aiao","email":"hero63418@gmail.com"},"_resolved":"/private/var/folders/1s/1sk5kvms7jj4z6glj40__v300000gn/T/b9752a41a0fcff656159d71251931efc/aiao-rxdb-plugin-search-react-0.0.23.tgz","_integrity":"sha512-qWphY9K5KswSjsfkEq4Rxe+rF2fO/6imfnH1LKucawwvCMMBBM89RPHeiP7oavLr7d7xG7PUsaybHJr2Pcjvug==","_npmVersion":"10.9.2","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@aiao/rxdb-plugin-search":"0.0.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.2","react":"^19.2.7","@aiao/rxdb":"*","@aiao/rxdb-plugin-search":"0.0.23"},"_npmOperationalInternal":{"tmp":"tmp/rxdb-plugin-search-react_0.0.23_1785736195713_0.7795723336344582","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@aiao/rxdb-plugin-search-react","version":"0.0.24","license":"MIT","_id":"@aiao/rxdb-plugin-search-react@0.0.24","maintainers":[{"name":"aiao","email":"hero63418@gmail.com"}],"dist":{"shasum":"2abf0089abbf9c2c4cf503a0c7dca16df3b856a9","tarball":"https://registry.npmjs.org/@aiao/rxdb-plugin-search-react/-/rxdb-plugin-search-react-0.0.24.tgz","fileCount":10,"integrity":"sha512-ly8ZVEOAeQWMjrkx7e4jvkVIU1y2njElqzGzUEyqtpWO/7Tg/WXG0u1CKxYBLnfs4ABUlt8mSOgroDh+dpd1VQ==","signatures":[{"sig":"MEUCIQCLDoeHfX9SPq+a6ZRv6VdMD45+CYGIO3fdMLIbQANjGwIgH28wo00B90unDjfhNxthbTKZJuo3dGDwaa/PUiYc2iU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16357},"main":"./dist/index.js","type":"module","_from":"file:aiao-rxdb-plugin-search-react-0.0.24.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"_npmUser":{"name":"aiao","email":"hero63418@gmail.com"},"_resolved":"/private/var/folders/1s/1sk5kvms7jj4z6glj40__v300000gn/T/e01ed15a7b86afc1e016cd69be33fcba/aiao-rxdb-plugin-search-react-0.0.24.tgz","_integrity":"sha512-ly8ZVEOAeQWMjrkx7e4jvkVIU1y2njElqzGzUEyqtpWO/7Tg/WXG0u1CKxYBLnfs4ABUlt8mSOgroDh+dpd1VQ==","_npmVersion":"11.19.0","description":"[`@aiao/rxdb-plugin-search`](../rxdb-plugin-search) 的 React 集成层。提供 `useSearch()` hook，将搜索插件的 `SearchHandle` 适配为 React 状态消费接口。","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.8.2","react":"^19.2.0","@aiao/rxdb":"*","@aiao/rxdb-plugin-search":"0.0.24"},"_npmOperationalInternal":{"tmp":"tmp/rxdb-plugin-search-react_0.0.24_1786439144078_0.4525191667531887","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@aiao/rxdb-plugin-search-react","version":"0.0.25","license":"MIT","repository":{"type":"git","url":"git+https://github.com/aiao-io/rxdb.git","directory":"packages/rxdb-plugin-search-react"},"type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{"./package.json":"./package.json",".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"peerDependencies":{"@aiao/rxdb":"*","@aiao/rxdb-plugin-search":"*","react":"^19.2.8","rxjs":"^7.8.2"},"devDependencies":{"@aiao/rxdb-plugin-search":"0.0.25"},"publishConfig":{"access":"public"},"_id":"@aiao/rxdb-plugin-search-react@0.0.25","description":"[`@aiao/rxdb-plugin-search`](../rxdb-plugin-search) 的 React 集成层。提供 `useSearch()` hook，将搜索插件的 `SearchHandle` 适配为 React 状态消费接口。","bugs":{"url":"https://github.com/aiao-io/rxdb/issues"},"homepage":"https://github.com/aiao-io/rxdb#readme","_integrity":"sha512-up9m/Sd8O5qocrjopGSYKjk2OZxKZtfirWCBemAHTM0Ymtz8xHQmkDjltUWQq61wVjm5ZKHKcpww9fX0+3BJuA==","_resolved":"/tmp/cd8af1ffde16f4c1dd1cb0cdd3c877e5/aiao-rxdb-plugin-search-react-0.0.25.tgz","_from":"file:aiao-rxdb-plugin-search-react-0.0.25.tgz","_nodeVersion":"26.7.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-up9m/Sd8O5qocrjopGSYKjk2OZxKZtfirWCBemAHTM0Ymtz8xHQmkDjltUWQq61wVjm5ZKHKcpww9fX0+3BJuA==","shasum":"bf8a440b36430a5f98b3c3d1fb33974b9e753ba0","tarball":"https://registry.npmjs.org/@aiao/rxdb-plugin-search-react/-/rxdb-plugin-search-react-0.0.25.tgz","fileCount":10,"unpackedSize":16570,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiao%2frxdb-plugin-search-react@0.0.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICPLDNLYRb8MKyRObjr4IVqj48QdfX2vP94WCsXbBBRcAiEAgfDQd6pThOo+66ZUr8h+x3xTNK0v44OpLbrmiMMp0r4="}]},"_npmUser":{"name":"aiao","email":"hero63418@gmail.com"},"directories":{},"maintainers":[{"name":"aiao","email":"hero63418@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rxdb-plugin-search-react_0.0.25_1786694798392_0.5576557247704936"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-20T03:09:24.315Z","modified":"2026-08-14T08:06:38.881Z","0.0.20":"2026-05-20T03:09:24.653Z","0.0.21":"2026-07-18T08:23:01.675Z","0.0.22":"2026-07-31T07:28:36.169Z","0.0.23":"2026-08-03T05:49:55.850Z","0.0.24":"2026-08-11T09:05:44.216Z","0.0.25":"2026-08-14T08:06:38.547Z"},"license":"MIT","description":"[`@aiao/rxdb-plugin-search`](../rxdb-plugin-search) 的 React 集成层。提供 `useSearch()` hook，将搜索插件的 `SearchHandle` 适配为 React 状态消费接口。","maintainers":[{"name":"aiao","email":"hero63418@gmail.com"}],"readme":"# @aiao/rxdb-plugin-search-react\n\n[`@aiao/rxdb-plugin-search`](../rxdb-plugin-search) 的 React 集成层。提供 `useSearch()` hook，将搜索插件的 `SearchHandle` 适配为 React 状态消费接口。\n\n## 安装\n\n```bash\npnpm add @aiao/rxdb @aiao/rxdb-plugin-search @aiao/rxdb-plugin-search-react react rxjs\n```\n\n## 用法\n\n```tsx\nimport type { RxDB } from '@aiao/rxdb';\nimport { rxDBPluginSearch } from '@aiao/rxdb-plugin-search';\nimport { useSearch, type UseSearchReturn } from '@aiao/rxdb-plugin-search-react';\n\nexport async function startSearch(database: RxDB): Promise<void> {\n  database.use(rxDBPluginSearch, { debounce: 200, pageSize: 20 });\n  await database.connect('sqlite-wasm');\n  await database.searchPlugin.ready;\n}\n\nexport function SearchPage({ database }: { readonly database: RxDB }) {\n  const search: UseSearchReturn = useSearch(database, {\n    collections: ['Article'],\n    initialQuery: ''\n  });\n\n  return (\n    <main>\n      <label>\n        Search\n        <input value={search.query} onChange={event => search.setQuery(event.currentTarget.value)} />\n      </label>\n      {search.error && <p role=\"alert\">{search.error.message}</p>}\n      {search.state === 'error' && <button onClick={search.retry}>Retry</button>}\n      <ul>\n        {search.results.map(result => (\n          <li key={`${result.collection}:${result.id}`}>{result.snippet}</li>\n        ))}\n      </ul>\n      {search.hasMore && <button onClick={() => void search.loadMore()}>Load more</button>}\n      <button onClick={search.clear}>Clear</button>\n    </main>\n  );\n}\n```\n\n`startSearch()` 必须在渲染 `SearchPage` 前完成。`connect()` 会触发数据库 `init()`；\n`database.searchPlugin.ready` 等待 FTS 安装与回填完成。未安装或销毁后访问 `ready` 会 reject，\n不能把它当成永远成功的探针。\n\n`useSearch` 返回 `UseSearchReturn`。hook 持有 `SearchHandle` 的所有权，组件卸载或重建时自动\n`destroy()`；调用方不要再次销毁底层 handle。\n\n### 重建契约（三端一致）\n\n`source` 变化、或 `options` 的 `collections` / `debounce` / `pageSize` / `snippetLength`\n任一变化时，旧 `SearchHandle` 被销毁、新 handle 以**用户当前 query** 播种：\n\n- `initialQuery` **只在首次创建时**作种子，此后不再参与重建判据，\n  因此传 `initialQuery: query` 不会导致每次击键重建 handle；\n- `options` 按语义（而非引用）比较，每次渲染新建的字面量不触发重建；\n- 重建后 `loadMore` / `clear` / `retry` 一律路由到最新 handle，旧 handle 的晚到 emission 不再写入输出。\n\n判据由 core 的 `searchOptionsEqual` 三端共用，重建时机不会因框架而异。\n\n三框架同功能对称：Angular 用 `injectSearch`（[`@aiao/rxdb-plugin-search-angular`](../rxdb-plugin-search-angular)），Vue 用 `useSearch`（[`@aiao/rxdb-plugin-search-vue`](../rxdb-plugin-search-vue)）。\n\n## 文档\n\n- 仓库主页：[https://github.com/aiao-io/rxdb](https://github.com/aiao-io/rxdb)\n- 框架集成与搜索指南见项目文档站\n\n## License\n\n[MIT](https://github.com/aiao-io/rxdb/blob/main/LICENSE)\n","readmeFilename":"README.md","homepage":"https://github.com/aiao-io/rxdb#readme","repository":{"type":"git","url":"git+https://github.com/aiao-io/rxdb.git","directory":"packages/rxdb-plugin-search-react"},"bugs":{"url":"https://github.com/aiao-io/rxdb/issues"}}