【问题标题】:Is there a way to use react multiple select with this有没有办法使用这个反应多重选择
【发布时间】:2021-03-09 19:43:19
【问题描述】:

我以前有一个这样的复选框

renderCategoriesMD() {
  const { classes, categoriesArray } = this.props;
  const { checkedCategories, reset } = this.state;
  if (categoriesArray && categoriesArray.length > 0) {
    return categoriesArray.map((cat, index) => {
      return (
        <div>
          <FormControlLabel
            key={index}
            control={
              <Checkbox
                tabIndex={-1}
                onClick={() => this.handleToggleCats(index)}
                checked={checkedCategories.indexOf(index) !== -1}
                checkedIcon={<Check className={classes.checkedIcon} />}
                icon={<Check className={classes.uncheckedIcon} />}
                classes={{
                  checked: classes.checked,
                  root: classes.checkRoot,
                }}
              />
            }
            classes={{ label: classes.label }}
            label={
              <Typography style={{ fontSize: 13 }}>
                {cat.name || ""}
              </Typography>
            }
          />
          {!reset && (
            <div style={{ marginLeft: 10 }}>
              {this.renderUnderSubCategoriesMD(cat)}
            </div>
          )}
        </div>
      );
    });
  }

  return null;
}

这样做是填充复选框的选项,如下图所示。

我现在想要实现的是对多个选项进行反应选择,因此我可以从反应选择中选择选项而不是复选框。

<Select
  value={this.state.value}
  name="filter__statistics"
  options={options}
  onChange={this.handleChange}
  multi={true}
/>

【问题讨论】:

    标签: javascript arrays reactjs object react-select


    【解决方案1】:

    我推荐你使用 npm 包,它非常易于使用和实现。 npm react-select

    有一个例子

    import React from 'react';
    import Select from 'react-select';
    
    const options = [
        { value: 'chocolate', label: 'Chocolate' },
        { value: 'strawberry', label: 'Strawberry' },
        { value: 'vanilla', label: 'Vanilla' },
    ];
    
    class App extends React.Component {
        state = {
            selectedOption: null,
        };
        handleChange = selectedOption => {
            this.setState({ selectedOption });
            console.log(`Option selected:`, selectedOption);
        };
        render() {
            const { selectedOption } = this.state;
    
            return (
                <Select
                    value={selectedOption}
                    onChange={this.handleChange}
                    options={options}
                />
            );
        }
    }
    

    【讨论】:

    • 我如何获得选项以显示我在问题中的先前选项
    猜你喜欢
    • 2020-07-31
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2015-04-04
    • 1970-01-01
    • 2012-04-25
    相关资源
    最近更新 更多