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

Next.js中react-autosuggest绑定useRef读取value报undefined如何解决

问题原因

这个报错和Next.js框架无关,是react-autosuggest的组件API设计导致的:你直接给<Autosuggest />组件绑定ref,拿到的是Autosuggest的组件实例,不是内部的原生input元素,因此autosuggestInput.current上不存在value属性,才会抛出未定义的错误。

解决方法

react-autosuggest提供了专门的inputRef属性,用来给内部的原生input绑定ref,同时所有作用在input上的属性(比如className、type)都要放到inputProps配置项中传递,不要直接写在Autosuggest组件标签上。

修正后的代码示例:

import { useState, useEffect, useRef } from 'react';
import Autosuggest from 'react-autosuggest';

export const SearchBar = () => {
  const autosuggestInput = useRef(null);

  // 注意:不要在组件渲染顶层直接读取value,要放到事件回调中执行,比如提交按钮点击、建议选中回调
  const handleSubmit = () => {
    const city = autosuggestInput.current?.value;
    // 后续提交逻辑
  }

  const handleSuggestionSelected = (event, { suggestion }) => {
    // 选中建议后触发提交的逻辑
    handleSubmit();
  }

  return(
    <Autosuggest
      {/* 其他react-autosuggest必填配置(suggestions、onSuggestionsFetchRequested等,你原有逻辑保留即可) */}
      onSuggestionSelected={handleSuggestionSelected}
      inputProps={{
        type: "text",
        ref: autosuggestInput,
        className: "py-3 px-4 block w-full shadow-sm focus:ring-blue-500 focus:border-blue-500 border-gray-300 rounded-md"
      }}
    />
  )
}
注意事项
  • 读取ref值时建议添加可选链操作符?.,避免组件未完成挂载时访问空值报错
  • 所有输入框相关的属性、事件监听都要放到inputProps中传递,才会作用到实际的input元素上

内容的提问来源于stack exchange,提问作者Katharina Schreiber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:21:02