首页 > 解决方案 > 在 React js 中使用 Reactstrap 从多选下拉列表中动态选择选项

问题描述

我有以下功能:

loadTag(data, td) {
    var tag = this.state.session.tag.map((el) => 
    $.inArray( el.name, data ) ? 
    <option key={el.name} value={el.key} defaultValue>{el.name}</option> : 
    <option key={el.name} value={el.key}>{el.name}</option>);
    ReactDOM.render(
      <Input type="select" className="dropselect_tag" name="tag" multiple>
        {tag}
      </Input>,
      td);
}

我希望能够在我的选择下拉菜单中提供的选项列表中动态选择多个选项。对于我的选择下拉列表,我正在使用reactstrapselect2插件,它确实初始化但没有选择任何内容。

我也试过这个:

loadTag(data, td) {
    var tag = this.state.session.tag.map((el) => 
    <option key={el.name} value={el.key}>{el.name}</option>);
    ReactDOM.render(
      <Input type="select" className="dropselect_tag" defaultValue={data} name="tag" multiple>
        {tag}
      </Input>,
      td);
}

但它不会产生任何结果。而且我很确定我正在发送这样的数组["item"]。我从我的数据库中解析我的数组并像这样测试:

 data = JSON.parse(data.replace(/&quot;/g,'"'));
 console.log(typeof data); 
 console.log(data);

有什么办法可以把这些东西拿出来吗?

标签: javascriptreactjsjquery-select2reactstrap

解决方案


我的建议是使用 react-select,它能够优雅地选择多个。你能试一试吗?

npm install react-select

import React, { Component } from 'react'
import Select from 'react-select'

const options = [
  { value: 'chocolate', label: 'Chocolate' },
  { value: 'strawberry', label: 'Strawberry' },
  { value: 'vanilla', label: 'Vanilla' }
]

const MyComponent = () => (
  <Select options={options} />
)

反应选择文档


推荐阅读