【antd】Switch,0和1,怎么办?

根据官方文档,Switch的值只可能是truefalse。但后端一般存储的是0和1,该怎么办?

方法一 转换接口数据

  1. 从接口来的数据 apiData={staus:1}
  2. 转化为表单 form={status:true}
  3. 再次转换传回接口 requestBody={staus:1}

方法二 封装Switch为NumericSwitch

示例代码来自AI

tsx 复制代码
import { Switch } from 'antd';

const NumericSwitch = ({ value, onChange, ...props }) => {
  return (
    <Switch
      {...props}
      checked={value === 1}
      onChange={(checked) => onChange(checked ? 1 : 0)}
    />
  );
};

方法三 使用react-vmodel

tsx 复制代码
"use client"
import { Button, Form, Switch } from "antd"
import { Model } from "react-vmodel"

  type FieldType = { status: number }
  const initialValues = { status: 1 }
  
export default function Demo() {
  const handleSubmit = (value: FieldType) => {
    console.log("value", value)
  }
  return (
    <Form onFinish={handleSubmit} initialValues={initialValues}>
      <Form.Item name={"status"}>
        <Model>{(vModel) => 
        <Switch {...vModel.checked({ trueValue: 1, falseValue: 0 })}></Switch>}
        </Model>
      </Form.Item>
      <Form.Item label={null}>
        <Button type="primary" htmlType="submit">
          Submit
        </Button>
      </Form.Item>
    </Form>
  )
}

支持一下

热情地欢迎各位兄弟姐妹的大力支持!

github: github.com/leafio?tab=...

期待至少一个项目能达成1000个star

期待至少一个npm能达成每周1000次下载

相关推荐
wx_lidysun20 小时前
Nextjs学习笔记
前端·react·next
无羡仙1 天前
从零构建 Vue 弹窗组件
前端·vue.js
源心锁1 天前
👋 手搓 gzip 实现的文件分块压缩上传
前端·javascript
源心锁1 天前
丧心病狂!在浏览器全天候记录用户行为排障
前端·架构
GIS之路1 天前
GDAL 实现投影转换
前端
烛阴1 天前
从“无”到“有”:手动实现一个 3D 渲染循环全过程
前端·webgl·three.js
BD_Marathon1 天前
SpringBoot——辅助功能之切换web服务器
服务器·前端·spring boot
Kagol1 天前
JavaScript 中的 sort 排序问题
前端·javascript
eason_fan1 天前
Service Worker 缓存请求:前端性能优化的进阶利器
前端·性能优化
光影少年1 天前
rn如何和原生进行通信,是单线程还是多线程,通信方式都有哪些
前端·react native·react.js·taro