我正在使用react-router。我在两个反应组件中嵌入了相同的外部小部件。第一次或当我刷新页面时,该小部件会正常加载。问题是当我更换页面时,小部件将不再加载。请看看我的代码:页面更改后不会加载外部脚本react-router
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'))
点击第一页上和小部件的负载,单击Page2上和理论上的小部件应重新加载,但事实并非如此。如果再次点击Page1,widget将不会加载。
全部代码在这里:https://codepen.io/vh_ruelas/pen/MbgdOm
非常感谢您解决了我最初发布的问题。我现在有一个不同的问题,如果我在同一页面中嵌入多个小部件,它们最初加载得很好,但是,一旦我改变页面并返回页面,只有一个小部件加载而不是多个小部件。我已在上面的链接中更新了[CodePen]中的代码(https://codepen.io/vh_ruelas/pen/MbgdOm)以显示该问题。我打算在一个页面中设置多个小部件,因为我将拥有具有不同href属性的小部件。 –
我解决了这个问题。我原本是将PlumXPopup组件嵌入到父组件(Page1)中,我将appendScript方法移到了父组件中,现在似乎都可以工作了,[我的代码](https://codepen.io/vh_ruelas/pen/MbgdOm )。非常感谢您的帮助,您已经帮助我解决了这个问题,我一直在努力争取一周! –
很高兴我可以帮助:)这实际上不应该是一个问题;我猜这是由于小部件中的一些错误,因为它使用了古老的jQuery版本。 –