【发布时间】:2020-10-15 07:42:02
【问题描述】:
我正在使用 Antd + Reactjs,(antd 表单,输入和选择选项)通过单击按钮(+ 发送到)动态生成相同的字段组。这工作正常但是,我想根据通过从特别行中的选择框中选择该选项,而不更改所有行的其他字段。 我已附上图片,因此您可以轻松回答此问题。 genrate feilds with send to button dynamically
when select option from select box then new feild add called (sizer name)
这是通过发送到按钮动态生成的 feild 代码
<Form.List name="variant_rate">
{(fields, { add, remove }) => {
return (
<div>
{fields.map((field, index) => (
<Space
key={field.key}
style={{ display: "flex", marginBottom: 8 }}
align="start"
>
<Form.Item
{...field}
name={[field.name, "send_to"]}
fieldKey={[field.fieldKey, "send_to"]}
rules={[
{
required: true,
message: "Select where to send yarn",
},
]}
>
<Select
onChange={sendToChnage}
onSelect={() => onSelect(index)}
placeholder="Send to"
Options={SendToOption}
/>
{/* <Select
placeholder="Catagory"
Options={["A Catagory", "B Catagory", "C Catagory"]}
/> */}
</Form.Item>
{flag ? (
<Form.Item
{...field}
name={[field.name, "sizer_id"]}
fieldKey={[field.fieldKey, "sizer_id"]}
rules={[
{
required: true,
message: "Please select Sizer Name",
},
]}
>
<Select
placeholder="Sizer name"
type="sizerList"
Options={sizerList ? sizerList : [<LazyLoad />]}
/>
</Form.Item>
) : null}
<Form.Item
{...field}
name={[field.name, "yarn_for"]}
fieldKey={[field.fieldKey, "yarn_for"]}
rules={[
{
required: true,
message: "Select for which yarn received",
},
]}
style={{ width: "100%" }}
>
{/* <Input
placeholder="Quanitity"
/> */}
<Select
placeholder="Yarn Recieved For"
Options={["warp", "weft"]}
/>
</Form.Item>
<Form.Item
{...field}
name={[field.name, "slip_no_fac"]}
fieldKey={[field.fieldKey, "slip_no_fac"]}
rules={[
{
required: true,
message: "Factory Slip No is Required",
},
]}
style={{ width: "100%" }}
>
<Input
placeholder="Factoy Slip No"
// prefix={<UserOutlined />}
/>
</Form.Item>
<Form.Item
{...field}
name={[field.name, "fac_bag"]}
fieldKey={[field.fieldKey, "fac_bag"]}
rules={[
{
required: true,
message: "Please Enter Bags Quantity!",
},
]}
style={{ width: "100%" }}
>
<StyledInputNumber placeholder="bags" />
</Form.Item>
<Form.Item
{...field}
name={[field.name, "fac_cons"]}
fieldKey={[field.fieldKey, "fac_cons"]}
rules={[
{
required: true,
message: "Please Enter Cons Quantity!",
},
]}
style={{ width: "100%" }}
>
<StyledInputNumber placeholder="Cons" />
</Form.Item>
{/* {fields.length > 1 ? ( */}
<MinusCircleOutlined
onClick={() => {
remove(field.name);
}}
/>
{/* ) : null} */}
</Space>
))}
<Form.Item>
<Button
width="187px"
margin="auto"
fontSize="16px"
weight="500"
height="auto"
bg="#ba3d79"
onClick={() => {
add();
// setVariant(true);
}}
>
<PlusOutlined /> Send To
</Button>
</Form.Item>
</div>
);
}}
</Form.List>
这是当您从选择框中选择选项时触发的 onChange 处理程序
const sendToChnage = (value, index) => {
console.log("value,index", value, index);
if (value === "sizer") setFlag(true);
else setFlag(false);
};
这是我用来隐藏或显示新字段(sizer name)的状态
const [flag, setFlag] = React.useState(false);
【问题讨论】:
标签: javascript html css reactjs antd