前端笔记

计算窗口 2/3 宽度

const useWidth = () => {
  const [w, setW] = useState(window.innerWidth * 0.66);
  useEffect(() => {
    const resize = () => setW(window.innerWidth * 0.66);
    window.addEventListener('resize', resize);
    return () => window.removeEventListener('resize', resize);
  }, []);
  return w;
};

antd v6 动态表单 set field value

<Form.Item label={"Demo List"}>
  <Form.List name={["field_a"]}>
    {(subFields, subOpt) => (
      <div
        style={{
          display: "flex",
          flexDirection: "column",
          rowGap: 16,
        }}
      >
        {subFields.map((subField) => (
          <Card key={subField.key}>
            <Form.Item
              label="Name"
              name={[subField.name, "name"]}
              rules={[{ required: true }]}
            >
              <Input placeholder="please enter name" />
            </Form.Item>
            <Form.Item<string>
              label="选择年龄"
              name={[subField.name, "age"]}
              rules={[{ required: true }]}
            >
              <Select
                options={ages.map((item) => ({
                  value: item.value,
                  label: item.label,
                }))}
                onChange={(value, option) => {
                  handleOptionChange(value, subField.name);
                }}
              />
            </Form.Item>
            <Form.Item
              name={[subField.name, "year"]}
              rules={[{ required: true }]}
              hidden
            >
              <Input />
            </Form.Item>

            <div style={{ display: "flex", justifyContent: "flex-end" }}>
              <CloseOutlined
                onClick={() => {
                  subOpt.remove(subField.name);
                }}
              />
            </div>
          </Card>
        ))}
        <Button type="dashed" onClick={() => subOpt.add()} block>
          + Create Item
        </Button>
      </div>
    )}
  </Form.List>
</Form.Item>;

const handleOptionChange = (value: any, idx: number) => {
  form.setFieldValue(["field_a", idx, "year"], value);
};

posted @ 2025-03-28 10:49  nptr  阅读(13)  评论(0)    收藏  举报