Skip to content

安装

js
npm i xc-components-custom -S
// or
yarn add xc-components-custom -S
// or 
pnpm add xc-components-custom -S

构建

app.json

js
style: "v2" // 去掉

project.config.json

js

...
packNpmRelationList: [
    {
        "packageJsonPath": "./package.json",
        "miniprogramNpmDistDir": "./"  // TS环境下需要改为./miniprogram/
    }
]
...
md
工具 --> 构建npm,之后生成 miniprogram_npm 文件夹即可

渲染一个input组件

index.json

json
{
    "usingComponents": {
        "xc-form":"/miniprogram_npm/xc-components-custom/xc-form/index"
    }
}

index.html

html
<view>
    <xc-form
        dataSource="{{dataSource}}"
        btnText="提交"
        bind:confim="onSubmit"
    ></xc-form>
</view>

index.js

js
Page({
    data: {
        dataSource: [
            {
                ele: 'input',
                label:'姓名',
                defaultValue:"",
                placeholder:"请输入姓名",
                required: true,
                disabled: false,
                toastMessage:'姓名不能为空',
                parameter:'name',
                titleWidth: 60,
                type: "text",
                maxLength: 10
            }
        ]
    },
    onSubmit(e){
        console.log('e:', e) // e.detail {name: ""} 拿到提交的结果
    }
})

效果

190

支持校验的input

index.js

js
Page({
    data: {
        dataSource: [
            {
                ele: 'input',
                label:'手机号',
                defaultValue:"",
                placeholder:"请输入手机号",
                required: true,
                disabled: false,
                toastMessage:'手机号不能为空',
                parameter:'phone',
                titleWidth: 60,
                maxLength: 11,
                regexp: 1 // 如果校验身份证号,可传[2,7]18位和15位都合格才通过
            }
        ]
    }
})

渲染一个Picker

index.js

js
Page({
    data: {
        dataSource: [
            {
                ele: 'picker',
                label:'性别',
                defaultValue:"",
                placeholder:"请选择性别",
                required: true,
                disabled: false,
                toastMessage:'性别不能为空',
                parameter:'gender',
                titleWidth: 30,
                columns: [
                    {
                        title: '男',
                        value: 1
                    },
                    {
                        title: "女",
                        value: 2
                    },
                    {
                        title: "保密",
                        value: 3
                    }
                ]
            }
        ]
    }
})

多选Picker

index.js

js
Page({
    data: {
        dataSource: [
            {
                ele: 'picker-multiple',
                label:'水果',
                defaultValue:[],
                placeholder:"请选择水果",
                required: false,
                disabled: false,
                // toastMessage:'水果选择不能为空',
                parameter:'fruit',
                titleWidth: 30,
                columns: [
                    {
                        title: '苹果',
                        value: 1
                    },
                    {
                        title: "西瓜",
                        value: 2
                    },
                    {
                        title: "香蕉",
                        value: 3
                    },
                    {
                        title: "火龙果",
                        value: 4
                    }
                ]
            }
        ]
    }
})

效果

190

Radio&checkbox

index.js

js
Page({
    data: {
        dataSource: [
            {
              ele: 'radio', // 复选框将radio改为 checkbox
              parameter:'fruit',
              defaultValue: "",// 复选框将""改为[]
              label:'水果',
              columns: [
                {
                  title:'苹果',
                  value:1,
                },
                {
                  title:'草莓',
                  value:2,
                },
                {
                  title:'红龙果',
                  value:3,
                }
              ]
            }
        ]
    }
})

日期选择 calendar

index.js

js
Page({
    data: {
        dataSource: [
            {
              ele: 'date',
              placeholder:'请选择脱发日期',
              parameter:'date',
              required: false,
              disabled:true,
              defaultValue:"",
              toastMessage: '选择脱发日期',
              label:'脱发日期',
              titleWidth: 60
            }
        ]
    }
})

上传图片

index.js

js
Page({
    data: {
        dataSource: [
            {
              ele: 'upload',
              parameter:'avatar',
              required: false,
              defaultValue:[],
              toastMessage: '照片',
              label:'照片',
              titleWidth: 60,
              uploadUrl:'', // 上传地址
              maxCount: 3,
              maxSize: 2
            }
        ]
    }
})

FormProps

字段名描述类型默认值
dataSource数据源Array[]--
isBtnShow是否显示按钮booleantrue--
btnStyle按钮样式string""--
btnText按钮文字string提交--
confim提交事件event--bind:confirm
id组件实例string--this.selectComponent('#id-name')
blurGroup失去焦点event--bind:blurGroup

FormInstance

字段名描述类型
setFieldsValue为字段设置值FunctionsetFieldsValue({name:'章三'})
setFieldDisabled设置禁用FunctionsetFieldDisabled(["name", true])
setComponentAfter插入组件FunctionsetComponentAfter('name',dataSource Props)

校验规则

描述
1手机号校验
218位身份证号码校验
36-16位且必须包含数字、字母(大小写均可)和特殊符号
46-16位数字+字母(大小写均可)
56-16位数字+字母(必须包含大小写)
66-16位数字+字母(必须包含大小写)加特殊符号
715位身份证号码校验
86-16位纯数字
96-16位纯数字,纯字母或数字与字母的组合都可,但不能包含特殊符号

dataSource Props

字段名描述可选项默认值
ele组件类型input picker picker-multiple radio upload--
label标题--标题
placeholder占位符--请输入
required是否必填--false
disabled是否禁用--false
toastMessage必填提示--必填
parameter接口字段----
titleWidth标题宽度--60
type输入类型text idcardtext
maxLength长度--200
clearable清除icon--false
defaultValue默认值--""

dataSource Props - picker

字段名描述类型默认值
columns数据源Array<{title: string; value: number}>[]

dataSource Props - multiple

字段名描述类型默认值
columns数据源Array<{title: string; value: number}>[]
defaultValue默认值Array<string>[]

dataSource Props - radio

字段名描述类型默认值
columns数据源Array<{title: string; value: number}>[]
defaultValue默认值number0

dataSource Props - checkbox

字段名描述类型默认值
columns数据源Array<{title: string; value: number}>[]
defaultValue默认值Array<string>[]

dataSource Props - upload

字段名描述类型默认值
uploadUrl上传地址string""
maxSize大小限制number2M
maxCount数量限制number5张
defaultValue默认值Array<{url: string}>[]

dataSource Props - date

字段名描述类型可选值默认值
type日期类型stringdate datetime"date"