I am using react-router. I have embedded the same external widget in two react components. The widget loads fine for the first time or when I refresh the page. The problem is when I change pages, the widget won't load anymore. Please look at my code:
var { Router, Route, IndexRoute, Link, browserHistory } = ReactRouter
var MainLayout = React.createClass({
render: function() {
return (
<div className="app">
<header className="primary-header"></header>
<aside className="primary-aside">
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/page1">Page1</Link></li>
<li><Link to="/page2">Page2</Link></li>
</ul>
</aside>
<main>
{this.props.children}
</main>
</div>
)
}
})
var Home = React.createClass({
render: function() {
return (<h1>Home Page</h1>)
}
})
var SearchLayout = React.createClass({
render: function() {
return (
<div className="search">
<header className="search-header"></header>
<div className="results">
{this.props.children}
</div>
<div className="search-footer pagination"></div>
</div>
)
}
})
var PageOne = React.createClass({
componentDidMount: function() {
const plumxScript = document.createElement("script");
plumxScript.src = "//d39af2mgp1pqhg.cloudfront.net/widget-popup.js";
plumxScript.async = true;
document.body.appendChild(plumxScript);
},
render: function() {
return (
<div
href="https://plu.mx/plum/a/?doi=10.1371/journal.pone.0056506"
className="plumx-plum-print-popup"
data-hide-when-empty="true"
data-popup="left"
data-size="medium"
target="_blank">
</div>
)
}
})
var PageTwo = React.createClass({
componentDidMount: function() {
const plumxScript = document.createElement("script");
plumxScript.src = "//d39af2mgp1pqhg.cloudfront.net/widget-popup.js";
plumxScript.async = true;
document.body.appendChild(plumxScript);
},
render: function() {
return (
<div
href="https://plu.mx/plum/a/?doi=10.1371/journal.pone.0056506"
className="plumx-plum-print-popup"
data-hide-when-empty="true"
data-popup="left"
data-size="medium"
target="_blank">
</div>
)
}
})
ReactDOM.render((
<Router>
<Route path="/" component={MainLayout}>
<IndexRoute component={Home} />
<Route component={SearchLayout}>
<Route path="page1" component={PageOne} />
<Route path="page2" component={PageTwo} />
</Route>
</Route>
</Router>
), document.getElementById('root'))
Click on Page1 and the widget loads, click on Page2 and in theory the widget should reload but it doesn't. If I click again on Page1 the widget won't load.
Full code here: https://codepen.io/vh_ruelas/pen/MbgdOm