New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

react-antd-mobile-table

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-antd-mobile-table

基于antd-mobile二次封装的表单组件

latest
npmnpm
Version
1.0.7
Version published
Weekly downloads
9
80%
Maintainers
1
Weekly downloads
 
Created
Source

react-antd-mobile-table

介绍

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组件属性:

keytypedescrequired
formDataobject表单初始值true
optionsobject表单配置项true
typestring当前表单类型, add,edit,viewtrue
submitfunc点击保存按钮提交事件false
cancelfunc点击返回按钮触发事件false

options属性:

keytypedescrequired
headerstring表单头部标题false
submitBtnboolean保存按钮显隐false
submitBtnTextstring保存按钮文字false
cancelBtnboolean返回按钮显隐false
cancelBtnTextstring返回按钮文字false
btnSizestring默认按钮大小, 'mini' ,'small','middle','large'false
columnArray表单配置项true

options中的column属性:

keytypedescrequired
labelstring表单项名字false
propstring表单formData字段名,不可重复true
typestring表单项类型:input,number,password,elect,date,radio,checkbox,rate,selector,slider,textarea,subtablefalse
disabledboolean表单项是否禁用fasle
addDisabledbooleantype为add时有效false
editDisabledbooleantype为edit时有效false
viewDisabledbooleantype 为view时有效false
displayboolean表单项显隐true
addDisplaybooleantype为add时有效true
editDisplaybooleantype为edit时有效true
viewDisplaybooleantype为view时有效true
selectListArray, string下拉,单选,日期,多选框等下拉项,可参考 antd-mobile相关配置项false
styleobject表单项相关样式false
radioLayoutstringcheckbox,radio配置项,inline,block。默认值:inline (单选框选项)false
其它配置项any基于antd-mobile封装,可传入相关组件的配置项false

List组件: 列表组件基于 antd-table 的 List、PullToRefresh、SearchBar、InfiniteScroll 进行二次封装的

keytypedescrequired
dataArray展示数据列表true
optionsobject属性key索引值,title展示内容,description小标题,header列表头部展示文字,mode卡片模式(default, card)false
searchBarOptionsobject搜索框配置项, 具体参考SearchBar 组件配置false
pullToRefreshOptionsobject下拉刷新配置,具体参考PullToRefresh组件配置false
listItemOptionsobject列表项相关配置,具体参考 List.Item 组件配置false
infiniteScrollOptionsobject上拉加载数据配置,具体参考 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>
    </>
  )
}

Keywords

react

FAQs

Package last updated on 03 Nov 2022

Did you know?

Socket

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.

Install

Related posts