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

MUI Autocomplete结合React Hook Form首次选中选项无显示且返回null的问题求助

MUI Autocomplete结合React Hook Form首次选中选项无显示且返回null的问题求助

我刚接触ReactJS和MUI,现在在项目里用MUI的Autocomplete组件展示国家列表,数据是通过country-state-city这个npm包获取的。

组件能正常渲染所有国家选项,但选中某个国家时遇到了奇怪的问题:第一次点击选项,输入框里不会显示对应的国家名称,控制台还会输出null;第二次点击同一个选项,才能把option.name显示到Autocomplete的输入框里。这到底是怎么回事啊?

另外我还结合了React Hook Form的Controller组件,因为需要把选中的国家名称提交给API服务器。

我是这样获取国家数据的:

const countries = require('country-state-city').getAllCountries();

getAllCountries()是这个包自带的获取所有国家数据的方法。

以下是我的代码:

<Controller
  control={control}
  defaultValue={''} // 国家字段默认值为空字符串
  name={'country'} // 字段名是字符串类型
  rules={{
    required: 'please select a country'
  }}
  render={({ field, fieldState }) => (
    <Autocomplete
      {...field}
      // 其他属性比如open、onOpen、onClose等
      onChange={(event, option : any, reason : string) => {
        if (reason === 'selectOption' && option !== null && option.name !== '') {
          field.onChange(option.name);
          console.log(field.value, 'is registered');
          return option.name;
        } else if (reason === 'clear') {
          field.onChange(null);
          console.log('textfield- cleared');
        }
      }}
      clearOnBlur={false}
      value={field.value}
      options={countries}
      freeSolo={true}
      isOptionEqualToValue={(option : any, value) => option.name === value.name}
      getOptionLabel={(option : any) => option.name ? option.name : ''}
      renderInput={(params) => (
        <TextField
          {...params}
          className={'inputField'}
          label={'Employee location'}
          InputProps={{
            ...params.InputProps,
            sx: { fontSize: '14px' }
          }}
          error={!!fieldState.error}
          helperText={fieldState.error?.message}
        />
      )}
    />
  )}
/>

这里Controller的name字段需要接收的是字符串类型的国家名称。之所以用option.name,是因为country-state-city返回的国家对象里包含name属性,其他属性还有currency、isoCode、flag、latitude、longitude等。

备注:内容来源于stack exchange,提问作者Himanshu Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:49:07