reactjs - ReactiveSearch、DataSearch 和索引用户查询
问题描述
我正在使用 Reactivesearch 中的 DataSearch 来实现自动完成功能,我试图弄清楚如何获取用户选择的查询并将其添加到我在 Appbaseio 托管的自动完成索引中?
当我说用户选择的查询时,我的意思是输入或从 DataSearch 组件下拉列表中选择的查询。
这是我到目前为止想出的
<DataSearch
componentId="SearchSensor"
dataField={["original_title"]}
className="search-bar"
onValueSelected={
function(value, cause, source) {
console.log("current value: ", value)
}
}
iconPosition="right"
innerclassName={{
list: "text-item"
}}
/>
上面的 onValueSelected 直接取自docs。看来这是我需要使用的属性才能做到这一点。我只是不确定如何将它连接到我的 Appbaseio ES 索引?
解决方案
onValueSelected
是在此处获取所选值的正确方法。(onQueryChange
如果需要,您还可以获取完整的查询)。获取此选定值后,onValueSelected
您可以使用fetch
对弹性搜索索引的简单请求对其进行索引,或将其发送到后端。还有一个帮助程序库和您可以尝试的休息文档。
另外,我建议将索引逻辑拉到服务器而不是在客户端公开它,因为您需要写入凭据才能执行写入。这将使您的写入凭据更安全。
例如:
<DataSearch
...
onValueSelected={(value) => {
fetch('YOUR_SERVER_URL' or 'Elasticsearch URL', { method: 'POST', body: {...} })
}
/>
推荐阅读
- javascript - 将“img.svg”导入 WebGL 已经使用的 Canvas
- python - 在 python 中使用 web 抓取 beautifulsoup 提取名称时不匹配
- django - Axios POST 调用不适用于 JWT 令牌,而 GET 调用有效
- django - 无法使用 Django Rest Framework 通过模型表示序列化的 ManyToMany 的所有字段
- javascript - javascript 正则表达式在第一个逗号之前提取文本并删除数字
- javascript - 无法访问 OMDb API
- npm - 从本地 GitLab 迁移到基于云的 GitLab 会导致 npm 测试失败:“TypeError: Cannot read property 'close' of undefined”
- codenameone - 是否可以在其他地方重复使用工具栏溢出菜单?
- r - 用 stringr 提取更大的字符数据体?
- javascript - 如何获得更改输入值的差异?