- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个理想的搜索字段,在以下情况之前不会进行任何 API 调用:
我使用了主题来跟踪输入字段中的更改。每次输入字段发生变化并调用 handleSuggestionsFetchRequested
时,我都会使用 searchString$.next(userInput); 将新值推送到
Subject
中。
在 useEffect
Hook 中,我使用 debounceTime(350)
对 searchString$
进行管道传输。和distinctUntilChanged()。像这样的事情:
useEffect(() => {
searchString$
.pipe(
debounceTime(350),
distinctUntilChanged(),
switchMap(searchString =>
ajax(`https://api.github.com/search/users?q=${searchString}`)
),
map((networkResponse: any) => networkResponse.response.items)
)
.subscribe((suggestions: Array<User>) => setSuggestions(suggestions));
}, [searchString$]);
但是每次用户输入发生变化时,API 调用仍然会进行。
我认为问题是每次输入字段的值发生变化时,我也会设置状态:
const handleChange = (
event: React.ChangeEvent<{}>,
{ newValue }: Autosuggest.ChangeEvent
) => {
setUserInput(newValue);
};
这会导致组件重新渲染并调用 useEffect,最终会一次又一次地进行 API 调用。
我可能是错的。
I've created a Sample Code Sandbox that replicates the issue.
提前非常感谢。
最佳答案
感谢yurzui的评论在我的tweet上,我能够找出问题的原因。
我在每次调节中创建一个新的主题
,如下行:
const searchString$: Subject<string> = new Subject<string>();
就在我的组件函数内部。
我把它搬了出来,它的作用就像一个魅力。
注意:按照 yurzui 的建议,不要忘记捕获 ajax 调用中的错误,否则 Subject
将会死亡。
我已经更新了代码沙盒示例,以防万一有人需要引用它。
关于reactjs - 带有 debounce 和distinctUntilChanged 的react-autosuggest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56764311/
对于我的自动建议,我正在使用下面的代码。 键入时,它只查看字符串的开头。 例如,如果我输入“abcd”,它会附带建议“abcde...”,这很好。 但是它没有做什么,如果我输入“def”并且在数据库中
我似乎无法自动建议使用ascii折叠功能(即将重音转换为等价的ascii) 制图 "_name": { "type": "text",
我将 solr4 与 TermsComponent Autosuggest 一起使用(如 here 所述)我们正在做一个正则表达式“startsWith”-search,忽略大写/小写,整个 sear
有人可以发布一个简单的 html 代码来说明如何使用简单的数据对象来实现它。 这是链接http://code.drewwilson.com/entry/autosuggest-jquery-plugi
我的 jquery 自动完成插件保留初始搜索的结果,并且不会用新搜索的结果替换这些结果。我的ASP代码如下: 虽然进行 Ajax 调用的 jQuery 看起来像这样: $(documen
我有一个 php 脚本,可以生成这种形式的 JS 数组 new Array( new Array("Maine", 1), new Array("Maryland", 2),
我正在尝试使用 Dew Wilson AutoSuggest plugin从服务器获取 json 并在我的 UI 上显示结果。我的回复如下所示: [{"id":1,"surname":"Surname
我想制作一个具有自动建议并搜索 XML 文件中特定标签的搜索框。我怎样才能实现这一点? 最佳答案 这取决于您所说的 XML 文件的含义。 XML 文件在某些服务器上可用吗? 看看jQuery及其
几天前我开始学习 JavaScript 和 React,现在我正在尝试使用 Material 设计构建一个简单的表格,我可以在其中通过简单的表单弹出窗口添加表格行,并通过行中的图标删除行。 我想对我的
嘿伙计们,我正在使用 JQuery 的自动建议,它运行得很好,只是一个问题。如果用户键入某些内容但该内容不存在,他只需单击逗号或制表符即可添加该值。我的问题是,如何禁用它并只允许他选择结果而不选择其他
我在 solrconfig.xml 文件中添加了搜索组件和请求处理程序,但我收到一条错误消息 "No suggester named default was configured" when I ty
我想知道是否可以过滤从/autosuggest 端点返回的结果类别。对于我的应用程序,我只希望返回位置(城镇、城市等)。 以前版本的 API 支持此过滤功能。 作为解决方法,我是否需要将返回的结果过滤
如何使用 React Autosuggest 激活滚动(如第四个示例 http://react-autosuggest.js.org/ )? 我无法在文档中找到执行此操作的选项。 最佳答案 实际上,这
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 4年前关闭。 Improve this qu
我确实花了一整天的时间尝试添加这个包:https://github.com/affinipay/react-bootstrap-autosuggest到我最近弹出的一个 create-react-ap
我想在 JSP 中添加 GWT 自动建议文本框。 有人可以对此提供一些见解吗? 谢谢 最佳答案 通常,GWT 被视为 Web 应用程序框架,与小部件框架不同。就我个人而言,我认为 GWT 太重了,无法
我真的like this plugin但这似乎是一个缺陷,它缺少能够动态创建您自己的标签的功能(它仅限于从下拉列表中选择)。 是否有任何其他插件支持此附加功能,或者自动建议插件是否支持输入我自己的标签
我正在尝试使用 Jquery 实现类似的功能,例如本网站文本区域下方可用标签的自动建议功能。我试图弄清楚在几次击键之后而不是每次击键之后如何发送请求。我正在使用“keyup”事件来触发我的应用程序上的
我正在编写一个网站以了解有关 PHP 的更多信息,并且正在制作一个 JQuery Autosuggest。脚本 here. 这是我的 autosuggest.php 代码: real_escape_s
我正在测试 documentation here .唯一的区别是我的 searchBox 是响应式的并且宽度为 100%。 在移动设备上,searchBoxContainer 不支持 se
我是一名优秀的程序员,十分优秀!