Hen*_*cci 3 reactjs material-ui
基本上,我创建了自动完成组件并将默认值设置为我的状态this.state.quest.ansType,但是当我更改此状态时,该组件会产生错误:组件在初始化后正在更改不受控制的自动完成的默认值状态。要抑制此警告,请选择使用受控的自动完成功能。
我需要这个来实现我的更新功能。当用户在数据库上选择注册时,我将加载自动完成默认值上保存的选项。
\n\nconst ansTypes = [\r\n {\r\n id: \'T\',\r\n desc: "Texto"\r\n },\r\n {\r\n id: \'M\',\r\n desc: "Multipla Escolha"\r\n },\r\n {\r\n id: \'U\',\r\n desc: "Escolha \xc3\x9anica"\r\n },\r\n];\r\n\r\n<Autocomplete className="cb" id={"ansType"} options={ansTypes}\r\n disableCloseOnSelect\r\n onChange={obj => this.selectAnsType(obj)}\r\n defaultValue={this.state.quest.ansType}\r\n getOptionLabel={option => option.desc}\r\n renderOption={(option, { selected }) => (\r\n <React.Fragment>\r\n <Checkbox\r\n style={{ marginRight: 8 }}\r\n checked={selected}\r\n color={"primary"}\r\n />\r\n {option.desc}\r\n </React.Fragment>\r\n )}\r\n renderInput={(params) => (<TextField {...params} label={"Answer Type"} />)}\r\n/>Run Code Online (Sandbox Code Playgroud)\r\n基本上,您在第一次渲染后更改了默认值,这是不应该发生的。要么使用不受控制的组件(-onChange、-value、+defaultValue、+ref),要么使用受控制的组件(+onChange、+value、-defaultValue、ref->仅在需要时)。对于不受控制的应该使用 DefaultValue!
...
<Autocomplete className="cb" id={"ansType"} options={ansTypes}
...
onChange={obj => this.selectAnsType(obj)}
value={this.state.quest.ansType}
...
/>Run Code Online (Sandbox Code Playgroud)
...
defaultAnsType={...};
myUncontrolledAutocomplete=React.createRef();
<Autocomplete className="cb" id={"ansType"} options={ansTypes}
...
defaultValue={this.defaultAnsType}
ref={this.myUncontrolledAutocomplete}
...
/>Run Code Online (Sandbox Code Playgroud)
我会使用受控的,因为它更容易理解。另一方面,不受控制的组件可能会使您的组件无状态,这可能是您将来可能想要使用的东西。
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |