Как установить значение TextField из раскрывающегося списка?

В следующем коде мне было любопытно, как установить значение следующего TextField. В этом примере, как мне установить TextField на выбранный элемент в раскрывающемся списке? Если пользователь выбирает «ВЕРХНИЙ УРОВЕНЬ» в раскрывающемся списке, я хочу, чтобы текстовое поле было «ВЕРХНИЙ УРОВЕНЬ». Раскрывающийся список называется Детский компонент.

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);
  };
}

После вставки логики Мухаммеда я получаю вот такую ​​ошибку. Мне нужно добавить событие onChange для TextField? а затем поместить this.state.selectedItem в событие handleChange? Нужно ли мне создавать новый дочерний компонент и иметь свертку TextField для ParentComponent?

введите здесь описание изображения


person Ethan    schedule 01.04.2020    source источник


Ответы (1)


Вам просто нужно назначить это состояние в опоре значения для textField, поскольку у вас есть selectedItem в вашем state

 <TextFieid
    label={"Test"}
    styles={{ root: { width: 300 } }}
    value={this.state.selectedItem}
  />
person Muhammad Haseeb    schedule 01.04.2020
comment
Привет, Мухаммад, спасибо за ответ. Где я могу назначить это состояние в опоре значения? После добавления value = {this.state.selectedItem} я получаю сообщение об ошибке Текущее значение текстового поля. Предоставляйте это только в том случае, если текстовое поле является управляемым компонентом, в котором вы поддерживаете его текущее состояние. В противном случае используйте свойство defaultValue. - person Ethan; 01.04.2020
comment
Вот свойства компонентов developer.microsoft.com/en-us/ ткань # / controls / web / textfield - person Ethan; 01.04.2020
comment
Просто назначьте значение состояния по умолчанию как пустую строку - person Muhammad Haseeb; 02.04.2020