Reactjs 如何创建受控结构UI TextField组件?

Reactjs 如何创建受控结构UI TextField组件?,reactjs,typescript,office-ui-fabric,Reactjs,Typescript,Office Ui Fabric,我一直在尝试以标准方式编写受控TextField组件,就像React docs中一样: handleChange(event) { this.setState({ text: event.target.value }); } <TextField label='Enter Text' value={this.state.text} onChange={this.handleChange}/> handleChange(事件){ 这是我的国家

我一直在尝试以标准方式编写受控TextField组件,就像React docs中一样:

handleChange(event) {
    this.setState({
            text: event.target.value
    });
}

<TextField label='Enter Text' value={this.state.text} onChange={this.handleChange}/>
handleChange(事件){
这是我的国家({
文本:event.target.value
});
}
上面的代码就是我一直在使用的代码,但它似乎没有改变react组件的状态,因为在相同的形式下,如果我更改受控复选框,它会将textfield重置为空。如果我使用一个标准的html输入元素,它会像预期的那样工作,并且不会清除字段

我做错了什么?文本字段的工作方式不应该与文本类型输入相同吗?

根据这一点:

handleChange(值){
这是我的国家({
文本:值
});

}
中的,
onChange
不是属性。改用
onChanged
。请注意,返回值是textfield的值,而不是事件

我不知道你想做什么 但是如果需要将输入值传递给文本标签,可以通过以下方式执行:

首先,必须在类之外声明一个接口

interface myState {
  value1: string;
}
必须在类中包含接口

class TextFieldControlledExample extends React.Component<{}, myState> {...}
必须在渲染中声明一个函数以指定状态值

public render() {
    const { value1 } = this.state;
通过这种方式,您可以分配输入值。但是要更新它,您必须创建一个函数并在onChange上调用它

<TextField
  label="Enter Text"
  value={this.state.value1}
  onChange={this._onChange}
  styles={{ fieldGroup: { width: 300 } }}
/>
<Text  variant='xxLarge' nowrap block>
  {value1}
</Text>

{value1}
将输入值指定给使用setState声明的状态。必须做一个函数

  private _onChange = (ev: React.FormEvent<HTMLInputElement>, newValue?: string) => {
    this.setState({ value1: newValue || '' });
  };
private\u onChange=(ev:React.FormEvent,newValue?:string)=>{
this.setState({value1:newValue | |''''});
};
你可以在这里看到这个例子

console.log(event.target.value)
放入handleChange函数中并检查值,它应该可以工作。尝试过该操作后,由于某种原因它不工作。它正在打印什么值?不打印任何内容:(不起作用。此外,我没有看到控制文本字段的示例,我在提问之前已经看过了。我在尝试实现复选框时遇到了类似的问题,但Microsoft提供了一个合适的示例:但不幸的是,对于文本字段,我没有找到解决方案。您是否已将
handleChange
绑定到您的comp中onent?是的,我有。(在初始化状态后的构造函数中
this.handleChange=this.handleChange.bind(this)
)谢谢。我10分钟前就知道了,我正在回答,但你更快,所以我会接受。哇,我花了很长时间才知道。他们的文档需要更清楚。。。
  private _onChange = (ev: React.FormEvent<HTMLInputElement>, newValue?: string) => {
    this.setState({ value1: newValue || '' });
  };