Uygulamamda yanıt yönlendirici kullanıyorum ve DOM'da bulunan bileşenlerin remount'ını durdurmanın bir yolunu arıyorum. Örneğin, dashboard
URL'sindeyseniz, ilgili bir DashboardComponent
bağlanmış olacaktır. dashboard/settings
'a geçtiğimde DashboardComponent
ve SettingsComponent
, DOM'a yeniden bağlanır. Sadece mevcut URL’nin çocuklarını yerleştirmek için temiz bir yol bulmak istiyorum. Bu mümkün mü?Sadece yeniden yönlendirici geçişi olan yeni çocuk bileşenlerini yeniden yüklemek mümkün mü
Yönlendirici:
import { Component, createFactory, PropTypes } from 'react'
import { Route, RouteHandler, DefaultRoute, NotFoundRoute } from 'react-router'
import Home from '../components/Home'
import Dashboard from '../components/Dashboard'
import ViewPlayers from '../components/clubs/ViewPlayers'
let route = createFactory(Route),
handler = createFactory(RouteHandler),
root = createFactory(DefaultRoute),
pageNotFound = createFactory(NotFoundRoute),
Transitions = createFactory(require('react/lib/ReactCSSTransitionGroup'));
class App extends Component {
constructor() {
super();
}
render() {
return (
Transitions({transitionName: 'fade'},
handler({key: this.context.router.getCurrentPath()})
)
)
}
}
App.contextTypes = {
router: PropTypes.func
};
let Router = (
route({path: '/', name: 'home', handler: App},
root({handler: Home}),
route({path: 'dashboard', name: 'dashboard', handler: Dashboard},
route({path: 'players', name: 'players', handler: ViewPlayers}),
)
)
);
export { Router };
Tablosu (Ana bileşen):
import React from 'react'
import { RouteHandler, Link } from 'react-router'
import { _, div } from './Html'
export default
class Dashboard extends React.Component {
constructor() {
super();
this.state = {}
}
componentWillMount() {
console.log('mounted')
}
componentWillUnmount() {
}
render() {
return (
div({},
_(Link)({to: 'players'}),
_(RouteHandler)({})
)
)
}
}
Not:_
React Router'ın hangi sürümünü kullanıyorsunuz? AFAIK normal davranışı, React'ı varsayılan olarak, tür ve pozisyonu değiştirmeyen ağaçtaki bileşenleri yeniden yüklemeyecek olan mutabakat algoritması yapmasına izin vermektir. * Bileşenleri yeniden * işleyecektir, ancak bunları yeniden monte etmemelidir. –
Belki de nasıl tepki verdiğinin anlaşılması yanlıştır, ancak geçiş değişikliği sırasında, 'componentWillMount' devreye girer - bu, bileşenin yeniden monte edildiğini göstermez mi? Ben v 0.13' kullanıyorum –
Evet, bu bileşen yeniden birleştirme olduğunu gösterir, ancak kendi React Router v0.13 projelerim varsa ve çift bileşen aynı kalırsa ve aynı konumda ağaç, yeniden monte etmiyor. Paylaşabileceğiniz bir kodunuz veya çoğaltılabilir bir örnek var mı? –