如何从下拉选择中设置 TextField 的值?

How do you set the value of a TextField from Dropdown Selection?

在下面的代码中,我很好奇您将如何设置以下 TextField 的值。 对于此示例,如何将 TextField 设置为下拉列表中的选定项? 如果用户在下拉列表中选择 "TOP LEVEL",那么我想将 TextField 填充为 "TOP LEVEL"。下拉列表称为 ChildComponent

import * as React from "react";
import ChildComponent from './Operations/ChildComponent';
import { DropdownMenuItemType, IDropdownOption } from 'office-ui-fabric-react/lib/Dropdown';
import { TextField} from 'office-ui-fabric-react/lib/TextField';
export interface ParentComponentState {
    selectedItem?: { key: string | number | undefined };
    value: {key: string};
  }

  export default class ParentComponent extends React.Component<{}, ParentComponentState> {
    constructor(props, context) {
        super(props, context);

      }
    public state: ParentComponentState = {
      selectedItem: undefined,
      value: undefined,
    };

  render(){
    const { selectedItem } = this.state;
    const options: IDropdownOption[] = [
        { key: 'blank', text: '' },
        { key: 'topLevelMake', text: 'Parents', itemType: DropdownMenuItemType.Header },
        { key: 'topLevel', text: 'TOP LEVEL' },
        { key: 'make', text: 'MAKE ITEM' },
        { key: 'divider_1', text: '-', itemType: DropdownMenuItemType.Divider },
        { key: 'Purchased', text: 'Purchases', itemType: DropdownMenuItemType.Header },
        { key: 'rawMaterial', text: 'RAW MATERIAL' },
        { key: 'buyItem', text: 'BUY ITEM' },
      ];
      return(
        <div>
            <ChildComponent 
                options={options} 
                selectedKey={selectedItem ? selectedItem.key : undefined}
                onChange={this._onChange}
            />
            <TextField
                name="textTest"
                label={"Test"}
            />
        </div>
          );
   }
   private _onChange = (event: React.FormEvent<HTMLDivElement>, item: IDropdownOption): void => {
    this.setState({ selectedItem: item });
    let opValue = item.text;
    console.log(event);
    console.log(opValue);
  };
}

插入穆罕默德的逻辑后,这是我得到的错误。我需要为 TextField 添加 onChange 事件吗?然后将 "this.state.selectedItem" 放入 handleChange 事件中?我是否需要制作一个新的子组件并将 TextField 汇总到 ParentComponent?

您只需要在 textField 的值属性中分配该状态,因为您在 state

中有 selectedItem
 <TextFieid
    label={"Test"}
    styles={{ root: { width: 300 } }}
    value={this.state.selectedItem}
  />
import * as React from "react";
import ChildComponent from './Operations/ChildComponent';
import { DropdownMenuItemType, IDropdownOption } from 'office-ui-fabric-react/lib/Dropdown';
import { TextField} from 'office-ui-fabric-react/lib/TextField';
export interface ParentComponentState {
    selectedItem?: { key: string | number | undefined };
    value?; 
  }

  export default class ParentComponent extends React.Component{
    constructor(props) {
        super(props);
        this.state = {
            value: '',
          };
        }
    public state: ParentComponentState = {
      selectedItem: undefined,
    };
    handleChange = (event) => {
        this.setState({
            value: event.target.value,
        })
    };
  render(){
    const { selectedItem } = this.state;
    const options: IDropdownOption[] = [
        { key: 'blank', text: '' },
        { key: 'topLevelMake', text: 'Parents', itemType: DropdownMenuItemType.Header },
        { key: 'topLevel', text: 'TOP LEVEL' },
        { key: 'make', text: 'MAKE ITEM' },
        { key: 'divider_1', text: '-', itemType: DropdownMenuItemType.Divider },
        { key: 'Purchased', text: 'Purchases', itemType: DropdownMenuItemType.Header },
        { key: 'rawMaterial', text: 'RAW MATERIAL' },
        { key: 'buyItem', text: 'BUY ITEM' },
      ];
      return(
        <div>
            <ChildComponent 
                options={options} 
                selectedKey={selectedItem ? selectedItem.key : undefined}
                onChange={this._onChange}
            />
            <TextField
                name="textTest"
                label={"Test"}
                onChange={this.handleChange}
                value={this.state.value}
            />
        </div>
          );
   }
   private _onChange = (event: React.FormEvent<HTMLDivElement>, item: IDropdownOption): void => {
    this.setState({ selectedItem: item });
    this.setState({value: item.text})
    let opValue = item.text;
    console.log(event);
    console.log(opValue);
  };
}