Typescript React Textfield 不会在 Dropdown 更改时更改值
Typescript React Textfield does not change value on Dropdown change
我有一个带有选项的下拉字段和一个文本字段,它们应该用于将用户输入存储在具有键值对的对象数组中。这发生在 textfield 的 onchange 事件中。此外,文本字段应从数组中检索数据,并在同一文本字段中显示下拉列表更改时的值。
我不确定这是否可行,我只是尝试动态设置文本字段的“defaultValue”属性。
在对象数组中保存用户输入的部分工作正常。但是文本字段中的值不会随着下拉列表的更改而改变。我得到了选定的值,因此在调试时也得到了数组中的值。
我在设置下拉元素的初始值时也遇到了问题。我不希望它在初始化时为空白,而是它应该具有我提供的选项集中的值之一。
下拉菜单:我设置 selectedValue 的地方
<Dropdown
defaultValue={this.options["foo"]} //<-- This doesnt work too
id="Dropdown"
options={this.options}
onChange={(event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption): void => {
this.setState({
selectValue : option?.text
}, this.onNameChanged);
}
}
/>
文本域:
<TextField
id="inputVarLang"
defaultValue={this.state.arrayObj[this.state.selectValue as any]}
placeholder={"---"}
onChange={(event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement | HTMLDivElement>,
newValue?: string): void => {
this.setState({
arrayObj: update(this.state.arrayObj
{[this.state.selectValue as any]: {$set: newValue ?? ""}})
}, this.onNameChanged);
}
}/>
如果有人能帮助我,那就太好了。
您需要像这样使用 TextField 的“value”属性而不是 defaultValue
<TextField
id="inputVarLang"
value={this.state.arrayObj[this.state.selectValue as any]}
placeholder={"---"}
onChange={(event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement | HTMLDivElement>,
newValue?: string): void => {
this.setState({
arrayObj: update(this.state.arrayObj
{[this.state.selectValue as any]: {$set: newValue ?? ""}})
}, this.onNameChanged);
}
}/>
我有一个带有选项的下拉字段和一个文本字段,它们应该用于将用户输入存储在具有键值对的对象数组中。这发生在 textfield 的 onchange 事件中。此外,文本字段应从数组中检索数据,并在同一文本字段中显示下拉列表更改时的值。
我不确定这是否可行,我只是尝试动态设置文本字段的“defaultValue”属性。
在对象数组中保存用户输入的部分工作正常。但是文本字段中的值不会随着下拉列表的更改而改变。我得到了选定的值,因此在调试时也得到了数组中的值。
我在设置下拉元素的初始值时也遇到了问题。我不希望它在初始化时为空白,而是它应该具有我提供的选项集中的值之一。
下拉菜单:我设置 selectedValue 的地方
<Dropdown
defaultValue={this.options["foo"]} //<-- This doesnt work too
id="Dropdown"
options={this.options}
onChange={(event: React.FormEvent<HTMLDivElement>, option?: IDropdownOption): void => {
this.setState({
selectValue : option?.text
}, this.onNameChanged);
}
}
/>
文本域:
<TextField
id="inputVarLang"
defaultValue={this.state.arrayObj[this.state.selectValue as any]}
placeholder={"---"}
onChange={(event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement | HTMLDivElement>,
newValue?: string): void => {
this.setState({
arrayObj: update(this.state.arrayObj
{[this.state.selectValue as any]: {$set: newValue ?? ""}})
}, this.onNameChanged);
}
}/>
如果有人能帮助我,那就太好了。
您需要像这样使用 TextField 的“value”属性而不是 defaultValue
<TextField
id="inputVarLang"
value={this.state.arrayObj[this.state.selectValue as any]}
placeholder={"---"}
onChange={(event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement | HTMLDivElement>,
newValue?: string): void => {
this.setState({
arrayObj: update(this.state.arrayObj
{[this.state.selectValue as any]: {$set: newValue ?? ""}})
}, this.onNameChanged);
}
}/>