You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:18:04