<Form.Item name = "goodstype" label = "商品类型" style={{display:'inline-block',width:'375px'}} >
<Select labelInValue={true} style={{ width: '100%' }} allowClear={true} placeholder="请选择商品所属类型">
{ this.state.gtypes.map((item)=>
<Option key={item.value} label={item.text} value={item.value}>{item.text}</Option>
</Select>
</Form.Item>
如何获取到label:
this.formRef.current.getFieldValue("goodstype")['label']
let formData=this.formRef.current.getFieldValue();
formData.typename=formData.goodstype['label'];
上面就是获取到Form.Item 中label的方法,希望对你有所帮助
存在这样的一个情况:在这样的一个下拉的选择框中,如何获取到对应的 商品类型的值,和label的值在select 中存在这样的一个属性:labelInValue看看我们怎么使用:代码: <Form.Item name = "goodstype" label = "商品类型" style={{display:'inline-block',width:'375px'}} > <Select labelInValue={true} style={{...
在日常工作
中
,有时候需要
获取
下拉选择框除了value其他的
值
,在
antd
官网
中
可以使用api
label
InValue;每个选项的
label
包装到 value
中
,会把
Select
的 value 类型从string变为 { value: string,
label
:
React
Node } 的格式
但是实际开发过程
中
这种远远不能满足需要:
import {
Select
} from '
antd
';
const { Option } =
Select
;
const opts = ...
记住:setFieldsValue的字段要对应得上
解决
antd
的
Form
组件setFieldsValue的警告
使用
antd
的
Form
组件setFieldsValue可能会出现You cannot set a
form
field before rendering a field associated with the value.警告,字面意义去看是说在 render之前设置了表单
值
的问题。
在使用setFieldsValue给表单
Form
的某一个filed赋
值
时,可能掺杂了非表单控件
中
的字段,
Form
表单在赋
值
和渲染时发现有些字段无法渲染在现有的字段(因为不存在),所以就会报出这
但是现在的问题是这样的:
触发
select
1,触发
select
2,再触发
select
1,此时
select
2里面的
值
变成了上次一选
中
的value
值
,而不会被清空。
解决办法:
使用
Select
里面的value属性,来进行清空
<
Form
style={{padding:'20px','boxSizing':'border-box'}}>
<
Select
defaultValue={packag
<
Form
.
Item
label
=作用对象>
{getFieldDecorator('targetId', { initialValue: this.state.targetId }, {
rules: [{
required: false,
message: '作用对象'
<
Select
placeholder=请选择作用对象>
{targetList.map(entity => <Option key={enti
@[TOC]ant design
select
下拉
获取
value和
label
ant design
select
下拉
获取
value和
label
过程
//
select
代码
<a-
select
v-decorator="[
'categoryId',
{rules: [{ required: true, message: '请选择设备分类' }]}
placeholder="请选择设备
const plainOptions = ['Apple', 'Pear', 'Orange'];
const defaultCheckedList = ['Apple', 'Orange'];
class App extends
React
.Component {
state = {
checkedList: defaultCheckedList,
indetermina
1、自定义组件被getFieldsValue包裹,会获得以下属性
onChange方法, 子组件调用此方法,可将
值
传给父组件,从而
Form
可拿到自定义组件的
值
value属性,获得初始
值
2、组件调用
像
Form
表单内的组件一样调用,就可以了
补充知识:Ant Design Pro,用setFieldsValue方法,给嵌套到
Form
表单
中
的DatePicker或RangePicker组件设置默认
值
其实用setFieldsValue或者
获取
setState方法都可以设置DatePicker的默认
值
。
但是关键点在于,引用moment方法转换日期格式
1、setState方法
一个非常简单的HOC,用于
AntD
Form
.
Item
,使其仅显示文本而不显示组件。 当您需要表单的查看模式时,此功能很有用。
yarn add
form
-
item
-view-hoc
这是将此HOC与
AntD
Form
.
Item
一起使用的示例
import
React
from "
react
" ;
import
React
DOM from "
react
-dom" ;
import with
Form
Item
View from "
form
-
item
-view-hoc" ;
import {
Form
, Input , Switch } from "
antd
" ;
const Custom
Form
Item
= with
Form
Item
View (
Form
.
Item
) ;
function My
Form
( props ) {
const
from.validateFields((err, val)=> {}) // 无响应
发现无响应, 无报错, 完全蒙逼了, 排查良久, 添加校验字段后发现可以成功校验, 于是想着大不了我全部手动添加字段名校验, 终于, 错误的原因浮现出来了
from.validateFields([n
第二步给
form
表单赋
值
<
Form
style={{ width: 600, marginLeft: 30, marginTop: 20 }} ref={this.
form
Ref}>
</
Form
>
第三步给每个
Form
.
Item
添加name属性
<
Form
.
Item
name="username"
label
="姓名"
1. 在
Form
组件
中
使用List组件作为表单项的容器,设置name属性为需要动态添加的表单项的字段名。
2. 在List组件
中
使用
Form
Item
组件作为每个表单项的容器,设置name属性为表单项的字段名。
3. 在
Form
Item
组件
中
使用对应的
antd
表单控件,如Input、
Select
等,设置name属性为表单项的字段名。
4. 在List组件
中
使用Button组件作为添加按钮,设置onClick事件为添加表单项的方法。
5. 在添加表单项的方法
中
,使用
Form
组件的setFieldsValue方法更新表单数据,添加新的表单项。
6. 在List组件
中
使用Button组件作为删除按钮,设置onClick事件为删除表单项的方法。
7. 在删除表单项的方法
中
,使用
Form
组件的setFieldsValue方法更新表单数据,删除对应的表单项。
示例代码如下:
import {
Form
, Input,
Select
, Button, List } from '
antd
';
const { Option } =
Select
;
const Demo = () => {
const [
form
] =
Form
.use
Form
();
const onFinish = (values) => {
console.log(values);
const add
Form
Item
= () => {
const { list } =
form
.getFieldsValue();
const nextList = [...list, { name: '', age: '', gender: '' }];
form
.setFieldsValue({ list: nextList });
const remove
Form
Item
= (index) => {
const { list } =
form
.getFieldsValue();
const nextList = [...list];
nextList.splice(index, 1);
form
.setFieldsValue({ list: nextList });
return (
<
Form
form
={
form
} onFinish={onFinish}>
<List name="list">
{(fields, { add, remove }) => (
{fields.map((field, index) => (
<
Form
.
Item
key={field.key}
name={[field.name, 'name']}
fieldKey={[field.fieldKey, 'name']}
rules={[{ required: true, message: '请输入姓名' }]}
<Input placeholder="姓名" />
</
Form
.
Item
>
<
Form
.
Item
key={field.key}
name={[field.name, 'age']}
fieldKey={[field.fieldKey, 'age']}
rules={[{ required: true, message: '请输入年龄' }]}
<Input placeholder="年龄" />
</
Form
.
Item
>
<
Form
.
Item
key={field.key}
name={[field.name, 'gender']}
fieldKey={[field.fieldKey, 'gender']}
rules={[{ required: true, message: '请选择性别' }]}
<
Select
placeholder="性别">
<Option value="male">男</Option>
<Option value="female">女</Option>
</
Select
>
</
Form
.
Item
>
<Button onClick={() => remove
Form
Item
(index)}>删除</Button>
<Button onClick={() => add
Form
Item
()}>添加</Button>
</List>
<Button htmlType="submit">提交</Button>
</
Form
>
export default Demo;
### 回答2:
### 回答3: