Skip to content

Instantly share code, notes, and snippets.

@sag1v
Created November 17, 2018 16:55
Show Gist options
  • Save sag1v/0be681d69618c9dff8c9c63af9fe3803 to your computer and use it in GitHub Desktop.
Save sag1v/0be681d69618c9dff8c9c63af9fe3803 to your computer and use it in GitHub Desktop.
react integration with other applications article
class App extends Component {
state = {
showCounter: false,
title: 'Whaaa! cool',
currentCount: 3
}
componentDidUpdate(prevProps, prevState) {
const { showCounter, title, currentCount } = this.state;
const shouldUpdateCounter =
prevState.showCounter !== showCounter || prevState.title !== title;
if (shouldUpdateCounter) {
if (showCounter) {
const counterProps = {
title,
initialCount: currentCount,
onCountUpdate: this.onCountUpdate
}
window.ReactCounter.mount(counterProps);
} else {
window.ReactCounter.unmount();
}
}
}
toggleCounter = () => this.setState(({ showCounter }) => ({ showCounter: !showCounter }));
onTitleChange = ({ target }) => this.setState({ title: target.value });
onCountUpdate = currentCount => this.setState({ currentCount });
render() {
const { title, currentCount } = this.state;
return (
<div className="App">
<header className="App-header">
<img onClick={this.toggleCounter} src={logo} className="App-logo" alt="logo" />
<div id="counter-app"></div>
<p>
This is the main App.
</p>
<div>{`The count is ${currentCount}`}</div>
<input value={title} onChange={this.onTitleChange} />
</header>
</div>
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment