• Antd Select组件结合使用出现must set key for <rc-animate> children问题


    一、以下情况可能导致错误发生

    出现这个问题的首要条件是因为Select的mode 设置成multiple or tags

    1. Select的defaultValue使用了空字符串

    例如:
    const emptyValue = ''
    const emptyValueArr = ['1', '']
    <Select
        mode="tags"
        defaultValue= emptyValue || emptyValueArr
    >
        {
            [1, 2].map((item, index) => (
                <Option key={index} value={item}>{item}</Option>
            ))
        }
    </Select>
    

    2. 结合Form的initialValue包含空字符串

    <FormItem {...formItemLayout} label="负责人">
        {getFieldDecorator('ownersAsList', {
            rules: [{
                required: true,
                message: '负责人不能为空'
            }],
            initialValue: ownersAsList || ['']
        })(
            <Select
                mode="tags"                                   
            >
                {
                    ownersList.map((item, index) => (
                        <Option key={index} value={item}>{item}</Option>
                    ))
                }
            </Select>
        )}
    </FormItem>
    

    二、解决办法

    1. 如果你不需要默认值, 直接设置为空数组: defaultValue = []

    注意: 空数组 != 含空字符串数组

    <Select
        mode="tags"
        defaultValue = []
    >
        {
            [1, 2].map((item, index) => (
                <Option key={index} value={item}>{item}</Option>
            ))
        }
    </Select>
    

    2. 如果希望有默认选中值: initialValue: ownersAsList || ['默认值']

    <FormItem {...formItemLayout} label="负责人">
        {getFieldDecorator('ownersAsList', {
            rules: [{
                required: true,
                message: '负责人不能为空'
            }],
            initialValue: ownersAsList || ['默认值']
        })(
            <Select mode="tags" >
                {
                    ownersList.map((item, index) => (
                        <Option key={index} value={item}>{item}</Option>
                    ))
                }
            </Select>
        )}
    </FormItem>
    
  • 相关阅读:
    Visual Studio的调试技巧
    释放linux的buff/cache
    Markdown画各种图表
    通过 SSH 转发TCP连接数据
    Linux之间用SSH传输文件 一行命令实现
    C# 使用OpenCV在一张图片里寻找人脸
    C# AOP 面向切面编程之 调用拦截
    ES5中新增的Array方法详细说明
    使用json数据动态创建表格2(多次绘制第一次简化 var tr=tbody.insertRow();)
    动态创建表格1
  • 原文地址:https://www.cnblogs.com/soyxiaobi/p/10001527.html
Copyright © 2020-2023  润新知