sunmao-sdk
Version:
榫卯-开箱即用赋能-sdk
87 lines (76 loc) • 2.09 kB
JSX
;
import React, { useState, useEffect } from "react";
import * as commonUtils from "../../utils/commonUtils";
import * as formUtils from "../../utils/formUtils";
import { Radio } from "antd";
const { Group } = Radio;
/**
* commonProps 独立配置
* showSearch : 是否可输入搜索,默认否 openSearch
* requestFunc : 外部传进网络请求方法,只能接受返回数组[] ,切记
* url : 如需网络获取选择列表,需提供url
* params : 网络请求参数
*
* list : 默认选择列表
* key : 对象key对应字段,即返回的value
* text : 对象name对应字段,即显示的name
* showName : 对象name对应字段,即显示的name
* specialReturn : 特殊返回函数,进行特殊处理,如不止需要返回选中 value时,可通过此方法返回,返回为数组或对象,结合antd的API,自行注意
*
*
* uiOptions 为antd中Select自带属性,参考antd中API
*
* bs:func 传值,不能被转json后
*/
const displayName = "RadioCommon";
const RadioCommon = props => {
const {
onChange,
name,
value,
schema: { commonProps = {} },
options: uiOptions
} = props;
const {
requestFunc,
url,
params,
list,
key = "key",
text = "preName",
okPath
} = commonProps;
const [state, set] = useState(null);
useEffect(() => {
if (list) setList(list);
// 需要网络请求
else if (url && requestFunc) {
post("");
}
}, []);
const post = async () => {
// 组装请求参数
requestFunc(url, params, okPath).then(req => {
setList(commonUtils.getFirstList(req));
});
};
const setList = data => {
let list = formUtils.getCPDicList(data, key, text);
list && set(list);
};
const handleChange = ({ target: { value } }) => {
onChange(name, value);
};
return (
state && (
<Group
style={{ width: "100%", padding: "5px 0" }}
value={value}
options={state}
onChange={handleChange}
{...uiOptions}
/>
)
);
};
export default RadioCommon;