社区首页 >问答首页 >如何从下拉选择中设置TextField的值?

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

Stack Overflow用户
提问于 2020-04-01 08:52:18
回答 2查看 1.6K关注 0票数 0

在下面的代码中,我很好奇如何设置以下TextField的值。对于本例,如何将TextField设置为下拉列表中选定的项?如果用户在下拉列表中选择“顶级”,那么我希望将TextField填充为“顶级”。下拉列表称为ChildComponent

代码语言:javascript
代码运行次数:0
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-01 08:57:05

您只需要在textField的值支柱中分配该状态,因为selectedItem在您的state中。

代码语言:javascript
代码运行次数:0
复制
 <TextFieid
    label={"Test"}
    styles={{ root: { width: 300 } }}
    value={this.state.selectedItem}
  />
票数 0
EN

Stack Overflow用户

发布于 2020-04-01 11:26:13

代码语言:javascript
代码运行次数:0
复制
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);
  };
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60976176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档