web-cheat/react/ref.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>ref</title>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone@7.14.7/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class ContentRenderer extends React.Component {
constructor(props) {
super(props);
this.state = {n: 0};
this.handleClick = this.handleClick.bind(this);
}
componentDidMount() {
this.myElement.addEventListener('click', (e) => {
alert(1);
});
}
componentWillUnmount() {
this.observer.disconnect();
}
handleClick() {
this.setState((state, props) => ({
n: state.n + 1
}));
}
render() {
return (
<div>
<div onClick={this.handleClick}>Click me</div>
<div
dangerouslySetInnerHTML={{ __html: "<b>" + this.state.n + "</b>" }}
ref={(myElement) => { this.myElement = myElement; }}
/>
</div>
);
}
}
ReactDOM.render(
<ContentRenderer/>,
document.getElementById('root')
);
</script>
</body>
</html>