在使用 Autocomplete 组件时,必须明确指定它是受控还是未受控的。如果 Autocomplete 组件既不是受控组件也不是未受控组件,则会出现“Err:Autocomplete 组件正在将未受控制的值状态更改为受控制的”错误。
以下是一个示例,展示如何使用受控组件来消除这个错误:
import React, { useState } from 'react';
import Autocomplete from '@material-ui/lab/Autocomplete';
import TextField from '@material-ui/core/TextField';
const fruits = ['Apple', 'Banana', 'Cherry', 'Date', 'Eggfruit'];
export default function AutocompleteExample() {
const [value, setValue] = useState(null);
const handleAutocompleteChange = (event, newValue) => {
setValue(newValue);
};
return (
(
)}
/>
);
}
在这个例子中,我们使用了 useState Hook 来创建一个名为 value 的 state。这个 state 包含了 Autocomplete 组件的值,并在 onChange 事件发生时更新。
我们将 value 指定为 Autocomplete 的 value 属性,表明组件是受控的。当 Autocomplete 组件的值更改时,handleAutocompleteChange 函数会更新 value 的值,从而更新组件的值。
当我们明确表明 Autocomplete 是一个受控组件时,就不会发生“Err: A component is changing the uncontrolled value state of Autocomplete to be controlled”错误了。