mirror of
https://gitee.com/baidu/amis.git
synced 2024-11-29 18:48:45 +08:00
fix:去掉Link组件的事件派发(意义不大)&补充onClick (#4217)
* fix:去掉Link组件的事件派发(意义不大)&补充onClick * feat:兼容一下老版本execOn
This commit is contained in:
parent
5bffc59db6
commit
1882311269
@ -78,13 +78,3 @@ order: 55
|
||||
| disabled | `boolean` | | 禁用超链接 |
|
||||
| icon | `string` | | 超链接图标,以加强显示 |
|
||||
| rightIcon | `string` | | 右侧图标 |
|
||||
|
||||
## 事件表
|
||||
|
||||
| 事件名称 | 事件参数 | 说明 |
|
||||
| -------- | -------------------------------------------------------------------------------------------------- | ---- |
|
||||
| click | `url: string` 链接地址 <br> `blank: boolean` 是否在新标签页打开 <br> `label: SchemaTpl` 标签内文本 | 点击 |
|
||||
|
||||
## 动作表
|
||||
|
||||
暂无
|
||||
|
@ -3231,9 +3231,9 @@ order: 9
|
||||
"actionType": "toast",
|
||||
args: {
|
||||
"msgType": 'info',
|
||||
"msg": '动作1',
|
||||
"preventDefault": true
|
||||
}
|
||||
"msg": '动作1'
|
||||
},
|
||||
"preventDefault": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ export interface ListenerAction {
|
||||
preventDefault?: boolean; // 阻止原有组件的动作行为
|
||||
stopPropagation?: boolean; // 阻止后续的事件处理器执行
|
||||
expression?: string; // 执行条件
|
||||
execOn?: string; // 执行条件,1.9.0废弃
|
||||
}
|
||||
|
||||
export interface ILogicAction extends ListenerAction {
|
||||
@ -119,10 +120,10 @@ export const runAction = async (
|
||||
event
|
||||
});
|
||||
|
||||
if (
|
||||
actionConfig.expression &&
|
||||
!evalExpression(actionConfig.expression, mergeData)
|
||||
) {
|
||||
// 兼容一下1.9.0之前的版本
|
||||
const expression = actionConfig.expression ?? actionConfig.execOn;
|
||||
|
||||
if (expression && !evalExpression(expression, mergeData)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -63,8 +63,10 @@ export class LinkCmpt extends React.Component<LinkProps, object> {
|
||||
htmlTarget: ''
|
||||
};
|
||||
|
||||
async handleClick(href: string) {
|
||||
const {env, blank, body, dispatchEvent, data} = this.props;
|
||||
@autobind
|
||||
handleClick(e: React.MouseEvent<any>) {
|
||||
const {env, href, blank, body} = this.props;
|
||||
|
||||
env?.tracker(
|
||||
{
|
||||
eventType: 'url',
|
||||
@ -73,21 +75,6 @@ export class LinkCmpt extends React.Component<LinkProps, object> {
|
||||
},
|
||||
this.props
|
||||
);
|
||||
// 触发渲染器事件
|
||||
const rendererEvent = await dispatchEvent(
|
||||
'click',
|
||||
createObject(data, {
|
||||
// 注意:每个组件都必须把数据链带上
|
||||
url: href,
|
||||
blank,
|
||||
label: body
|
||||
})
|
||||
);
|
||||
|
||||
// 阻止原有动作执行
|
||||
if (rendererEvent?.prevented) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
getHref() {}
|
||||
@ -123,6 +110,7 @@ export class LinkCmpt extends React.Component<LinkProps, object> {
|
||||
htmlTarget={htmlTarget || (blank ? '_blank' : '_self')}
|
||||
icon={icon}
|
||||
rightIcon={rightIcon}
|
||||
onClick={this.handleClick}
|
||||
>
|
||||
{body ? render('body', body) : value || __('link')}
|
||||
</Link>
|
||||
|
Loading…
Reference in New Issue
Block a user