вы можете сделать это следующим образом:
import React from "react";
import ReactDOM from "react-dom";
import Popover from "react-popover";
import "./styles.css";
class App extends React.Component {
constructor(props) {
super(props);
this.state = { id: -1, color: "white", isOpen: false };
}
togglePopover = (e, _id, _color) => {
if (_id !== this.state.id && this.state.isOpen) {
this.setState({ isOpen: !this.state.isOpen }, function() {
this.setState({ id: _id, color: _color, isOpen: !this.state.isOpen });
});
} else
this.setState({ id: _id, color: _color, isOpen: !this.state.isOpen });
};
render() {
return (
<div className="App" style={{ margin: "50px" }}>
<div>
<Popover
style={{ backgroundColor: this.state.color, color: "white" }}
isOpen={this.state.isOpen && this.state.id === 1}
body={<div className="Balloon">Popover Content</div>}
>
<button onClick={e => this.togglePopover(e, 1, "red")}>
Toggle Popover
</button>
</Popover>
</div>
<br />
<br />
<div>
<Popover
style={{ backgroundColor: this.state.color }}
isOpen={this.state.isOpen && this.state.id === 2}
body={<div className="Balloon">Popover Content</div>}
>
<button onClick={e => this.togglePopover(e, 2, "yellow")}>
Toggle Popover
</button>
</Popover>
</div>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
также вы можете использовать функцию togglePopover
в качестве метода наведения мыши, и она работает для любого числа Popover
без необходимости изменять внутренний код
Вывод ответа: ЗДЕСЬ