Svelecte自动补全组件无法渲染建议选项的问题排查求助
Svelecte自动补全组件无法渲染建议选项的问题排查求助
我用Svelecte实现了一个书籍搜索的自动补全组件,核心代码是最简Demo版本,和实际项目里的组件表现完全一致:
<script> import Svelecte, { addFormatter } from 'svelecte'; let clearable = true; let resetOnBlur = true; let fetchResetOnBlur = true; let valueField = 'id' let labelField = 'fulltitle'; let minQueryValue = 3; let value; let fetchCallbackData = []; const fetchCallback = ( data ) => { fetchCallbackData = [...data]; console.log("Fetch callback got", data.length, "items:", data); return data; } function handleChange(e) { if ( e.detail !== null ) { const selected = e.detail; value = null } } </script> <Svelecte inputId='query' {resetOnBlur} {fetchResetOnBlur} {labelField} {valueField} {clearable} fetchCallback={fetchCallback} bind:value valueAsObject minQuery={minQueryValue} multiple={false} placeholder="Sisesta pealkiri..." fetch="/autocomplete?fragment=[query]" on:change={ handleChange } > <b slot="icon">⌖</b> </Svelecte> <h4>下方列表会渲染后端返回的结果(即使Svelecte不显示):</h4> <ul> {#each fetchCallbackData as item} <li>{item.fulltitle} – {item.id}</li> {/each} </ul>
组件的逻辑很直接:用户输入内容后调用后端/autocomplete接口,后端会根据查询字符串生成对应的数据库查询,返回结构统一的数据。但现在遇到了非常诡异的问题:
- 搜索书名(比如输入「Suur Gatsby」)时,Svelecte能正常渲染自动补全建议
- 搜索ISBN10(比如对应同一本书的「9985842243」)时,后端返回的数据结构和内容完全和书名搜索一致,但Svelecte里就是不显示建议选项,只有下面的测试列表能正确渲染出后端返回的结果
- 另外,搜索ISBN13/EAN时,如果后端返回1条结果,Svelecte能正常显示;但返回多条结果时,同样无法显示建议
我已经做了这些排查:
- 确认后端返回的数据结构完全统一,不管是书名、ISBN10还是ISBN13查询,返回的字段(
fulltitle、id等)都完全一致 - 通过
fetchCallbackData渲染的测试列表能正确展示所有后端返回的结果,说明接口调用成功、数据也正常接收到了 - 前端代码里没有对查询类型做任何区分,所有请求的处理逻辑是完全相同的
实在摸不着头脑,有没有遇到过类似问题的朋友?到底是什么原因会导致Svelecte在这种场景下不渲染建议选项呢?
内容来源于stack exchange
相关产品推荐
相关产品推荐

