antd预填充标记和多选

antd预填充标记和多选,antd,Antd,我正在处理antd select,在正确预填充它时遇到问题,我可以通过其initialValue字段装饰器预填充选择框,但是它填充字符串,似乎没有办法获得值(我可以解决但不理想),更重要的是,如果选项未被选中/删除,与标准选项不同,它不再在“选择”中可用。我可以在选择列表选项和初始值(如下面的代码所示)中包含,但它允许重复自动输入,并且在下拉列表中出现两次。知道我做错了什么吗 预选和完整选项列表的准备 let defaultSelect = []; let selectList

我正在处理antd select,在正确预填充它时遇到问题,我可以通过其initialValue字段装饰器预填充选择框,但是它填充字符串,似乎没有办法获得值(我可以解决但不理想),更重要的是,如果选项未被选中/删除,与标准选项不同,它不再在“选择”中可用。我可以在选择列表选项和初始值(如下面的代码所示)中包含,但它允许重复自动输入,并且在下拉列表中出现两次。知道我做错了什么吗

预选和完整选项列表的准备

    let defaultSelect = [];
    let selectList = [];
    for (var a = 0; a < this.props.myData.length; a++) {
        //push all options to select list
        selectList.push(<Select.Option key={this.props.myData[i].id} >{this.props.myData[i].name}</Select.Option>)
        //this is my code to pre-populate options, by performing a find/match
        let matchedTech = _.find(this.props.myDataPrepopulate, { id: this.props.myData[i].id });
        if (matchedTech) {
            //notice I can push just the string name, not the name and the id value.
            defaultSelect.push(this.props.myData[i].name);
        }
    }
让defaultSelect=[];
让selectList=[];
对于(var a=0;a
选择代码

    {getFieldDecorator(row.name, {
        initialValue: defaultSelect
    })(
    <Select
        tags
        notFoundContent='none found'
        filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
        {selectList}
    </Select>
    )}
{getFieldDecorator(row.name{
initialValue:defaultSelect
})(
option.props.children.toLowerCase().indexOf(input.toLowerCase())>=0}
{selectList}
)}

我想我理解你的问题,即使你发布的代码没有运行

的工作原理与普通html
一样。为了给选项一个值,它需要一个
value
属性,该属性用于标识选项

有关工作示例,请参见

转化为您的示例的关键部分将是:

this.props.myData.forEach( data => {
    selectList.push(<Select.Option value={data.id} key={data.id}>{data.name}</Select.Option>);
} );

defaultSelect = this.props.myDataPrepopulate.map( data => data.id );
this.props.myData.forEach(数据=>{
selectList.push({data.name});
} );
defaultSelect=this.props.myDataPrepopulate.map(data=>data.id);

(我冒昧地使用了比您的原始代码更现代的代码模式)

您发布的代码有许多语法错误:I未定义,