材质 UI 自动完成 onInputChange() 在首次挂载组件并给出输入时调用两次

Material UI Autocomplete onInputChange() called twice when component is first mounted and input is given

提问人:karan mirani 提问时间:11/4/2023 最后编辑:karan mirani 更新时间:11/4/2023 访问量:35

问:

我的 Material UI 自动完成组件如下所示:

<Autocomplete
      open={!!value || !!inputValue}
      getOptionLabel={(option) =>
        typeof option === "string" ? option : option.suggestion
      }
      filterOptions={(x) => x}
      forcePopupIcon={false}
      options={options}
      autoComplete
      filterSelectedOptions
      value={value}
      onChange={(event: any, newValue: Suggestion | null) => {
        setOptions(newValue ? [newValue, ...options] : options);
        setValue(newValue);
      }}
      onInputChange={(event, newInputValue) => {
        console.log("onInputChange()");
        setInputValue(newInputValue);
      }}
      renderInput={(params) => (
        <TextField
          {...params}
          fullWidth
          label={!!value || !!inputValue ? "" : "Search a location"}
          focused
          autoFocus
          InputLabelProps={{ shrink: false }}
        />
      )}
      renderOption=<render-options>
    />

我注意到,当组件首次加载并给出输入时,在Chrome和Firefox上被调用了两次。它在 Safari 中仅调用一次。我想知道为什么会发生这种情况,我该如何解决它?onInputChange()

ReactJS 谷歌-Chrome 素材-UI Safari

评论

0赞 Hiimdjango 11/4/2023
您使用的是 StrictMode 吗?
0赞 karan mirani 11/5/2023
我没有明确启用它,但我使用的是 next.js 14.0.0。此链接 nextjs.org/docs/pages/api-reference/next-config-js/...表明 StrictMode 默认启用 next .js 13.4
0赞 Hiimdjango 11/5/2023
启用 StrictMode 后,组件会在开发模式下呈现两次,这有助于捕获错误。尝试禁用它或运行应用程序的构建,看看它是否仍然发生

答: 暂无答案