表单中详情页面字段自定义渲染
1. 使用场景
本例介绍一下在宜搭表单页面中如何使用字段自定义渲染。
2. 实现功能
2.1. 创建表单页面
![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1705903584528-603d9801-84c5-4649-83a6-2232474b1fc6.png)
2.2. 配置字段自定义渲染
将下述代码拷贝至页面 JS 中,注意修改组件唯一标识。
![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1705904395704-f1ba4dc1-afd1-40f2-90b6-ba5ba040ad4d.png)
// 当页面渲染完毕后马上调用下面的函数,这个函数是在当前页面 - 设置 - 生命周期 - 页面加载完成时中被关联的。
export function didMount() {
if (!this.utils.isSubmissionPage()) {
// 红色的文字
this.$('textField_lbam5p6w').set('renderView', (value) => {
return <span style={{ color: 'red' }}>{value}</span>;
});
// 访问网址
this.$('textField_lbbjotg2').set('renderView', (value) => {
return <a href={value} target="_blank" rel="noreferrer">{value}</a>;
});
// 发送邮件
this.$('textField_lroioatg').set('renderView', (value) => {
return <a href={`mailto:${value}`} target="_blank" rel="noreferrer">{value}</a>;
});
// 拨打手机
this.$('textField_lrodvffc').set('renderView', (value) => {
return <a href={`tel:${value}`} target="_blank" rel="noreferrer">{value}</a>;
});
const tableField = this.$('tableField_lfhnlfkf'); // 获取子表单定义
const items = tableField.getItems(); // 获取子表单行标识
const tableValue = tableField.getValue(); // 获取子表单数据
items.forEach((item, index) => {
// 访问网址 - 子表单
tableField.setComponentProps(item, 'textField_lfhnlfkg', {
renderView: (value) => {
return <a href={value} target="_blank" rel="noreferrer">{value}</a>;
},
});
// 图片预览 - 子表单
tableField.setComponentProps(item, 'textField_lfhnlfkj', {
renderView: () => {
return (
<div
style={{
display: 'flex',
overflowX: 'auto',
userSelect: 'none',
paddingBottom: '8px',
}}
>{
(tableValue[index].imageField_lfhnlfkh || []).map((_item, _index) => {
const { previewUrl, name, downloadUrl } = _item;
const urls = tableValue[index].imageField_lfhnlfkh.map((img) => { return img.downloadUrl; });
return (
<img
src={previewUrl}
title={name}
style={{
display: 'block',
width: '48px',
height: '48px',
borderRadius: '6px',
cursor: 'pointer',
marginRight: (+_index + 1) !== urls.length ? '8px' : '0px',
}}
onClick={() => {
this.utils.previewImage({
urls,
current: downloadUrl,
});
}}
/>
);
})
}
</div>
);
},
});
});
}
}
3. 实现效果
![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1705903685987-73451a54-01b8-42dc-9504-9b2596525a3d.png)
4. 在线试玩
本文档对您是否有帮助?