react-router를 사용하고 있습니다. 두 개의 반응 구성 요소에 동일한 외부 위젯을 포함 시켰습니다. 위젯은 처음으로 또는 페이지를 새로 고침 할 때 정상적으로로드됩니다. 문제는 페이지를 변경할 때 위젯이 더 이상로드되지 않는다는 것입니다. 페이지 1 위젯로드에페이지 변경 후 외부 스크립트가로드되지 않습니다. 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'))
클릭, 다시로드해야 위젯 페이지 2에 이론을 클릭하지만 그렇지 않습니다 : 내 코드를보고하십시오. Page1을 다시 클릭하면 위젯이로드되지 않습니다. 여기
전체 코드 : https://codepen.io/vh_ruelas/pen/MbgdOm
정말 고맙습니다. 원래이 문제를 해결해 주셔서 감사합니다. 이제는 다른 이슈가 생겼습니다. 같은 위젯에 여러 위젯을 포함 시키면 처음에는 페이지가 바뀌고 페이지로 돌아 오면 여러 위젯 대신 하나의 위젯 만로드됩니다. 위의 링크에서 [CodePen] (https://codepen.io/vh_ruelas/pen/MbgdOm)의 코드를 업데이트하여 문제를 표시했습니다. href 속성이 다른 위젯을 가지고 있기 때문에 하나의 페이지에 여러 위젯을 설정할 계획입니다. –
나는이 문제를 해결했다. 원래 부모 컴포넌트 (Page1) 안에 PlumXPopup 컴포넌트를 임베드 할 때 appendScript 메소드를 상위 컴포넌트로 옮겼습니다. 이제는 [내 코드] (https://codepen.io/vh_ruelas/pen/MbgdOm)가 작동하는 것 같습니다.). 도움을 많이 주셔서 감사 드리며,이 문제로 많은 도움을 주셨습니다. 일주일 동안 고생하고있었습니다. –
다행스럽게도 도움이 될 수 있습니다 :) 실제로 문제가되어서는 안됩니다. jQuery의 고대 버전을 사용한다고 가정 할 때 위젯의 일부 버그로 인한 것 같습니다. –