代码之家  ›  专栏  ›  技术社区  ›  Lucio Zenir

如何使用材质UI在react上动态创建选择和状态?

  •  0
  • Lucio Zenir  · 技术社区  · 6 年前

    我需要根据我拥有的选择列表创建选择组件,例如:

    列表->项目1, 项目2

    组件:

    <Select 
      value={this.state."NAME OF THE ITEM ON THE LIST"}
      onChange={this.handleChange}
     <MenuItem value={X} key={X} > Something </MenuItem> (the MenuItem part is working)
    </Select>
    

    select component 需要一个值,我需要这个值 state ,因此当单击它时,它将调用该方法 handleChange 并将更新如下状态:

    handleChange = (event) => {
        this.setState({
            "THE NAME OF THE ITEM ": event.target.value(this comes from the MenuItem)
        });
    };
    

    如何创建 状态 因此,如果我有一个包含X个iten的列表,它将创建X selects 还有X states 是否要更新?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Arnaud Christ    6 年前

    您可以在您的状态中使用数组属性来管理这些项

    state = {
        items: []
    }
    

    然后,在动态添加select时,必须在此数组中添加新值

    addItem = () => {
        this.setState({
            items: [
                ...this.state.items, // previous items
                { value: ""} // plus the new one
            ]
        });
    };
    

    最后,当渲染选择

    <Select
      value={this.state.items[index].value
      onChange={event => {
        this.setState({ // map over the array to modify the matching item
          items: this.state.items.map(
            (item, idx) =>
              idx === index ? {...item, value: event.target.value} : item
          )
        });
      }}>
    
        2
  •  0
  •   Venkat Ch    5 年前

    希望下面的代码片段能对您有所帮助,

    {this.props.data.map((e, keyIndex) => {
        return (<MenuItem key={keyIndex} value={e.warehouseId}>{e.name}</MenuItem>);
     })
    }