React-Routerコンポーネントに関しては、私はダフィーです。しかし、私はリンクを歩いているときに私のコンポーネントがアンマウントする理由についての説明を見つけることができませんでしたか?それを防ぐ方法は?私はエラーだReact-routerでコンポーネントをアンマウントするのを防ぐ
によってタイマーを含むコンポーネントと再レンダリングコンテンツ持って私の例では
:ここ
はReactJSコードです:
/*global define, Backbone, React, $, Request, Router, Route, Link */
var App = React.createClass({
render: function() {
return (
<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
<li><Link to="/timer">Timer</Link></li>
</ul>
{this.props.children}
</div>
)
}
});
var About = React.createClass({
render: function() {
return <h3>Here is about page</h3>
}
});
var Timer = React.createClass({
getInitialState: function() {
return {counter: 0};
},
render: function() {
return (
<div>
<h2>Time is running over...</h2>
<b>{this.props.interval}</b>
<p>{this.state.counter}</p>
</div>
)
},
componentDidMount: function() {
this.loadCommentsFromServer();
setInterval(this.loadCommentsFromServer, 1000);
},
loadCommentsFromServer: function() {
this.setState({counter: this.state.counter + 1});
}
});
React.render((
<Router location="history">
<Route path="/" component={App}>
<Route path="about" component={About} />
<Route path="timer" component={Timer} />
</Route>
</Router>
), document.body);
で
style
プロパティを処理することを忘れないでください、あなたはタイマーをしたいですかあなたのアプリ全体を通してアクティブになる?なぜあなたはそれのための特定のルートを持っていますか? – deowkこれは単なる例です。私の主な目的は、リンクをナビゲートする際にコンポーネントをアンマウントしないことです。実際のプロジェクトでは、巨大なグリッドを持つ複雑なコンポーネントがあります。だから私はこのコンポーネントに戻るたびに、データを取得するためにサーバーに要求を送信します。しかし、私はそのような行動は必要ありません。なぜReact-Routerはコンポーネントを隠すのではなく、コンポーネントを破壊するのか理解できません。 – AlexeiBerkov
react-routerはこの場合予想どおりに動作しています。アンマウントしないコンポーネントがある場合は、トップレベルのアプリケーションコンポーネントに組み込む必要があります。下の答えを参照してください。 – deowk