它可能有风险,但似乎至少在撰写本文时就可以使用,我们正在生产中使用它。
这是ES6和React,我已经测试过并发现它适用于以下浏览器。一个额外的好处是,如果有异常(在进行此操作的过程中有几个),它会像普通<a>
链接一样进入该链接,但不会是SPA,然后是OFC。
桌面:
- Chrome v.76.0.3809.132
- Safari v.12.1.2
- Firefox Quantum v.69.0.1
- 边缘18
- 边缘17
- IE11
手机/平板电脑:
- Android v.8 Samsung Internet
- Android v.8 Chrome
- Android v.9 Chrome
- iOs11.4 Safari
- iOs12.1 Safari
。
import 'mdn-polyfills/MouseEvent';
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
class ProductListLink extends Component {
constructor(props) {
super(props);
this.realClick = true;
this.onProductClick = this.onProductClick.bind(this);
}
onProductClick = (e) => {
const { target, nativeEvent } = e;
const clonedNativeEvent = new MouseEvent('click', nativeEvent);
if (!this.realClick) {
this.realClick = true;
return;
}
e.preventDefault();
e.stopPropagation();
this.realClick = false;
target.dispatchEvent(clonedNativeEvent);
};
render() {
<Link
onClick={(e => this.onProductClick(e))}
>
Lorem
</Link>
}
}
$this.trigger(e);
(如果需要编辑,则需要标志)或$this.parent().trigger(e)
(在回调中)在哪里$this
引用单击的元素?