
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
react-antd-mobile-table
Advanced tools
react-antd-mobile-table 基于 antd-mobile 进行二次封装的表单组件
使用: 表单配置项
export const defaultOptions = {
header: "", // 表单头部标题
submitBtn: true, // 保存按钮显隐
submitBtnText: "保存", // 保存按钮文字
cancelBtn: true, // 返回按钮显隐
cancelBtnText: "返回", // 返回按钮文字
btnSize: "middle", // 默认按钮大小
column: [
{
label: "input",
prop: "input",
rules: [{ required: true, message: '姓名不能为空' }]
},
{
label: "number",
prop: "number",
type: "number",
max: 99
},
{
label: "password",
prop: "password",
type: "password"
},
{
label: "select",
prop: "select",
type: "select",
selectList: [
{
label: "18",
value: "18"
},
{
label: "19",
value: "19"
},
{
label: "20",
value: "20"
}
]
},
{
label: "date",
prop: "date",
type: "date"
},
{
label: "radio",
prop: "radio",
type: "radio",
selectList: "是,否"
},
{
label: "checkbox",
prop: "checkbox",
type: "checkbox",
radioLayout: "inline",
selectList: [
{
label: "足球",
value: "足球"
},
{
label: "篮球",
value: "篮球"
},
{
label: "乒乓球",
value: "乒乓球"
}
]
},
{
label: "rate",
prop: "rate",
type: "rate"
},
{
label: "selector",
prop: "selector",
type: "selector",
selectList: "1, 2, 3, 4"
},
{
label: "slider",
prop: "slider",
type: "slider"
},
{
label: "Switch",
prop: "switch",
type: "switch"
},
{
label: "textarea",
prop: "textarea",
type: "textarea"
},
{
label: "subtable",
prop: "subtable",
type: "subtable",
column: [
{
label: "input",
prop: "hello"
},
{
label: "date",
prop: "date",
type: "date"
}
]
}
]
}
import { Form } from "react-antd-mobile-table"
// 表单组件基本使用
export default function App() {
// 初始化数据
const formData = { input: "", slider: 50, checkbox: ["1"], select: "", date: "", switch: true }
// form表单实例方法
const refForm = createRef();
const [type, setType] = useState("add");
const [options, setOptions] = useState(defaultOptions);
// 保存按钮
const submit = (value) => {
}
return (
<Form formData={formData} ref={refForm} options={options} type={type} submit={submit} />
)
}
Form组件属性:
| key | type | desc | required |
|---|---|---|---|
| formData | object | 表单初始值 | true |
| options | object | 表单配置项 | true |
| type | string | 当前表单类型, add,edit,view | true |
| submit | func | 点击保存按钮提交事件 | false |
| cancel | func | 点击返回按钮触发事件 | false |
options属性:
| key | type | desc | required |
|---|---|---|---|
| header | string | 表单头部标题 | false |
| submitBtn | boolean | 保存按钮显隐 | false |
| submitBtnText | string | 保存按钮文字 | false |
| cancelBtn | boolean | 返回按钮显隐 | false |
| cancelBtnText | string | 返回按钮文字 | false |
| btnSize | string | 默认按钮大小, 'mini' ,'small','middle','large' | false |
| column | Array | 表单配置项 | true |
options中的column属性:
| key | type | desc | required |
|---|---|---|---|
| label | string | 表单项名字 | false |
| prop | string | 表单formData字段名,不可重复 | true |
| type | string | 表单项类型:input,number,password,elect,date,radio,checkbox,rate,selector,slider,textarea,subtable | false |
| disabled | boolean | 表单项是否禁用 | fasle |
| addDisabled | boolean | type为add时有效 | false |
| editDisabled | boolean | type为edit时有效 | false |
| viewDisabled | boolean | type 为view时有效 | false |
| display | boolean | 表单项显隐 | true |
| addDisplay | boolean | type为add时有效 | true |
| editDisplay | boolean | type为edit时有效 | true |
| viewDisplay | boolean | type为view时有效 | true |
| selectList | Array, string | 下拉,单选,日期,多选框等下拉项,可参考 antd-mobile相关配置项 | false |
| style | object | 表单项相关样式 | false |
| radioLayout | string | checkbox,radio配置项,inline,block。默认值:inline (单选框选项) | false |
| 其它配置项 | any | 基于antd-mobile封装,可传入相关组件的配置项 | false |
List组件: 列表组件基于 antd-table 的 List、PullToRefresh、SearchBar、InfiniteScroll 进行二次封装的
| key | type | desc | required |
|---|---|---|---|
| data | Array | 展示数据列表 | true |
| options | object | 属性key索引值,title展示内容,description小标题,header列表头部展示文字,mode卡片模式(default, card) | false |
| searchBarOptions | object | 搜索框配置项, 具体参考SearchBar 组件配置 | false |
| pullToRefreshOptions | object | 下拉刷新配置,具体参考PullToRefresh组件配置 | false |
| listItemOptions | object | 列表项相关配置,具体参考 List.Item 组件配置 | false |
| infiniteScrollOptions | object | 上拉加载数据配置,具体参考 InfiniteScroll 组件配置 | false |
// 案例
import React, { createRef, useState } from "react";
import { List, ActionSheet } from "react-antd-mobile-table";
// 模拟请求数据
const getRandomData = () => {
const list = Array.from({ length: 30 }).map((item, index) => ({ id: index + 1 + Math.random(), name: index + "_hello", desc: "world_" + index }))
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(list)
}, 2000)
})
}
const actions = [
{ text: '复制', key: 'copy' },
{ text: '修改', key: 'edit' },
{ text: '保存', key: 'save' },
];
export default () => {
// 数据列表
const [list, setList] = useState([]);
const listRef = createRef();
const [row, setRow] = useState({});
const actionSheetRef = createRef();
const options = {
key: "id", // 数据遍历 索引
title: "name", // 展示标题字段
description: "desc", // 展示描述字段
header: "标题内容", // list 标题
mode: "default" // 默认和卡片两种模式 default | card
};
// 搜索框配置
const searchBarOptions = {
onSearch: (value) => {
console.log(value, "___value___", list);
}
};
// list 选项配置
const listItemOptions = {
onClick: (e, item) => {
setRow(item);
actionSheetRef.current.setVisible(true);
}
};
// 上拉加载数据配置
const infiniteScrollOptions = {
loadMore: async () => {
const res = await getRandomData();
if (list.length < 100) {
setList([...list, ...res])
} else {
listRef.current.setHasMore(false)
}
}
}
const onAction = (action, close, row) => {
close();
}
return (
<>
<List
ref={listRef}
data={list}
options={options}
searchBarOptions={searchBarOptions}
listItemOptions={listItemOptions}
infiniteScrollOptions={infiniteScrollOptions}
/>
<ActionSheet row={row} onAction={onAction} actions={actions} ref={actionSheetRef}></ActionSheet>
</>
)
}
FAQs
基于antd-mobile二次封装的表单组件
The npm package react-antd-mobile-table receives a total of 9 weekly downloads. As such, react-antd-mobile-table popularity was classified as not popular.
We found that react-antd-mobile-table demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.