问题描述
我正在迁移旧版应用程序以做出反应,但不幸的是,在该应用程序中,我们使用的是https://datatables.net/之类的不同JS库。
DataTable在React之外操作DOM,因此onClick事件不适用于Children组件,例如<SdrRow />
。
我想知道是否有任何技巧将onClick事件附加到由React外部的DOM修改独立触发的组件上。
class SdrsTable extends React.Component {
constructor(props) {
super(props);
this.state = {
sdrs: props.sdrs,context: props.context
}
this.ref = React.createRef();
}
componentDidMount() {
console.log(this.el);
this.$el = $(this.el)
this.$el.DataTable({
rowId: 'code',order: [],pageLength: 50,columns: [
{data: 'action'},...
],responsive: {
details: {
renderer: function (api,rowIdx,columns) {
// render logic when user collapses one row (tr appended outside React too)
}
}
},});
}
render() {
let rows = [];
for (let i=0; i < this.state.sdrs.length; i++) {
rows.push(<SdrRow key={i} context={this.state.context} sdr={this.state.sdrs[i]}/>);
}
return (
<table id="sdr_preview_table" className="display table text-Nowrap dt-responsive"
ref={el => this.el = el }
style={{width: "100%"}} width="100%">
<thead>
...
</thead>
<tbody>
{rows}
</tbody>
</table>
);
}
}
class SdrRow extends React.Component {
constructor(props) {
super(props);
this.state = {
sdr: props.sdr,context: props.context,}
}
handleClick = (e) => {
e.preventDefault();
console.log('triggered');
}
render() {
return (
<tr className="sdr_preview">
<td>
....
</td>
<td>
<div className="sdr_preview_action">
<a href="#"
onClick={(e) => this.handleClick(e)}
Modifica
</a>
</div>
</td>
</div>
</tr>
);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)