antd: 1.11.1 /
react.js: 0.14.7
在使用antd的select时报错Uncaught Error: no key or value for [object Object]
代码附上:
<Form horizontal form={this.props.form} onSubmit={this.handleSubmit.bind(this)}>
<FormItem
{...formItemLayout}
label="导航配置版本名称"
hasFeedback
>
<Select key='0' labelInValue defaultValue={{key:navigationConfigVersionName}} size="large" name="navigationConfigVersionName" placeholder="请选择导航配置名称" style={{ width: '100%' }} onChange={this.handleChange.bind(this)}>
{option}
</Select>
</FormItem>
</Form>
数据是从接口中查出,我在使用defaultValue给默认值时,发生这个错误,请问是什么问题?怎么解决?
我在网上也查到类似问题https://github.com/ant-design...
据说是给select 加个key? 我给它加了自定义的key='0',仍然报这个错,是我理解错误还是哪里有问题?基本上只要使用defaultValue就会报这个错。
现在的情况是这样的,可以把传过来的值查到,但是不是作为select的默认值,而是在下拉中的第一位,红框部分是我的默认值:
谢谢!
我把代码放在这里:
render() {
const { getFieldProps , getFieldError, isFieldValidating} = this.props.form;
/**从上一页传过来的默认值 */
let navigationRow = this.props.navitationRow;
let navigationConfigVersionId = navigationRow.advertisementConfigVersionId;
let navigationConfigVersionName = navigationRow.navigationConfigVersionName;
let navigationConfigVersionHtmlUrl = navigationRow.navigationConfigVersionHtmlUrl;
/**接口中的数据 */
let navigationConfigRows = this.props.iosAndroidState.navigationConfigEntity;
console.log("454131" + navigationConfigRows);
/**组织接口中数据在下拉中显示 */
let option;
let optionSize;
if (!navigationConfigRows) {
option = (<Option>加载中...</Option>);
} else {
let list = navigationConfigRows.list;
console.log("546541346" + list);
if (list) {
optionSize = list.length;
option = list.map((row, i) => {
let {appConfigVersionId,configVersionName} = row;
return <Option key={i} value={appConfigVersionId}>{configVersionName}</Option>
});
}
if(!navigationRow){
option = [<Option key={optionSize}>{'下拉选择'}</Option>, ...option];
}else{
option = [<Option key={navigationConfigVersionId} value={navigationConfigVersionName}>{navigationConfigVersionName}</Option>, ...option];
}
}
const formItemLayout = {
labelCol: { span: 7 },
wrapperCol: { span: 12 }
};
/**antd 组件Select 添加labelInValue的目的是为了在选择数据时,除了拿到它的value外,也可以拿到它的label */
let defaultName = {navigationConfigVersionName}
return (
<div>
<Form horizontal form={this.props.form} onSubmit={this.handleSubmit.bind(this)}>
<FormItem
{...formItemLayout}
label="导航配置版本名称"
hasFeedback
>
<Select labelInValue defalutValue={defaultName} size="large" placeholder="请选择导航配置名称" style={{ width: '100%' }} onChange={this.handleChange.bind(this)}>
{option}
</Select>
</FormItem>
</Form>
</div>
)
}
在select的子级中我有加key,但还是报错,真心不会搞了我,求大神帮忙。
请仔细查看 antd 的 API...叫你加 key 是让你在 select 子级里加上 key..说你这key没有是你{option}里的没这个key。。。