react项目class类中 dangerouslysetinnerhtml 中的点击事件的实现,点击事件不写在生命周期中
时间: 2023-06-27 18:04:36 浏览: 106
点击事件的问题
在 React 中,通常我们会在 `render` 函数中使用 `dangerouslySetInnerHTML` 来设置 HTML 内容。如果你需要在这个 HTML 内容中实现点击事件,可以在 `render` 函数中创建一个 `ref`,然后在 `componentDidMount` 生命周期函数中使用原生的 JavaScript 方法将事件绑定到这个 ref 上。这样就可以实现在 `dangerouslySetInnerHTML` 中设置的 HTML 内容中的点击事件了。
以下是一个示例代码:
```jsx
import React, { Component } from 'react';
class MyComponent extends Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
}
componentDidMount() {
this.myRef.current.addEventListener('click', this.handleClick);
}
componentWillUnmount() {
this.myRef.current.removeEventListener('click', this.handleClick);
}
handleClick = () => {
console.log('Clicked');
}
render() {
return (
<div ref={this.myRef} dangerouslySetInnerHTML={{ __html: '<p>Click me</p>' }} />
);
}
}
```
在这个示例中,我们创建了一个 `ref`,并在 `componentDidMount` 生命周期函数中使用 `addEventListener` 方法将点击事件绑定到这个 `ref` 上。在 `componentWillUnmount` 生命周期函数中,我们使用 `removeEventListener` 方法将点击事件从 `ref` 上移除。在 `render` 函数中,我们将 `ref` 赋值给 `div` 元素,并使用 `dangerouslySetInnerHTML` 设置了 HTML 内容。点击这个 HTML 内容时,`handleClick` 方法会被调用。
阅读全文