0
我剛開始,所以我不知道這是期望的行爲還是我錯過了某些東西。我使用的是Flux架構(特別是Reflux,但這不應該是相關的)。在我的超級簡單測試應用程序中:反應路由器轉換總是會創建處理程序
var App = React.createClass({
render: function() {
return (
<div className="container">
<Header />
<RouteHandler />
<div>
);
}
});
var routes = (
<Route name="app" path="/" handler={App}>
<Route name="employees" handler={Employees}/>
<Route name="company" handler={Company}/>
<Route name="timesheets" handler={Timesheets}/>
<DefaultRoute handler={Company} />
</Route>
);
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.getElementById('main'));
});
處理程序是React組件,最簡單的設置。當應用程序啓動時,我按預期登錄「公司」頁面。然後,當我轉換到「員工」時,一切都很好,但當我轉換回「公司」時,我發現創建了一個全新的{公司}組件,因此吹掉了我的狀態。這會導致很多不必要的API調用,除非我做錯了或不理解。
有沒有辦法告訴路由使用現有的處理程序,如果存在,只是重新渲染它?而不是創建一個新班級?
我在通量存儲中存儲狀態。這不是問題。問題在於getInitialState被多次調用。我需要它只被調用一次。 – blackwood 2015-03-03 14:58:03
如果您從商店中存儲的值中獲取初始狀態,則不應調用多次調用getInitialState。如果您不想進行太多的API調用,如果數據已經存在於商店中,請避免進行API調用以獲取'getInitialState'中的數據。 – 2015-03-03 15:29:33
如果你的問題比這更復雜,你能提供一個你想要做的樣本嗎? [JSFiddle](http://jsfiddle.net/vjeux/kb3gN/)是一個很好的工具。 – 2015-03-03 15:36:54