Соединения React Router представляют собой компоненты двойной рендеринга. Может ли кто-нибудь повторить мои результаты ниже:React Router Ссылки представляют собой компоненты двойной рендеринга
При первой загрузке страницы вы получите сообщение «RENDERING HOME», зарегистрированное один раз. Но с помощью ссылок всегда будет дважды записываться строка «RENDERING».
import ReactDOM from 'react-dom';
import React from 'react';
import { Router, Route, Link, IndexRoute, hashHistory, browserHistory } from 'react-router';
class home extends React.Component {
render(){
console.log('RENDERING HOME');
return(
<Link to='destination'>Link to Destination</Link>
)
}
}
class destination extends React.Component {
render(){
console.log('RENDERING DESTINATION');
return(
<Link to='/'>Link to Home</Link>
)
}
}
var App = React.createClass({
render: function() {
return(
<Router history={hashHistory}>
<Route path='/' component={home}/>
<Route path='destination' component={destination}/>
</Router>
);
},
});
ReactDOM.render(<App />, document.getElementById('app'));
EDIT: Это, как представляется, ошибка, другие отмечали его на среагировать-маршрутизатор GitHub. Его единственная ошибка с hashHistory. Переключение на browserHistory решает проблему.
Вы говорите, что при изменении пути, который запускаются как функции 'console.log'? –
Нет, если вы нажмете ссылку назначения, «RENDERING DESTINATION» будет регистрироваться дважды. Значение компонента назначения отображается дважды. Замечание об изменении пути не имеет этого результата. Если я просто перейду к пункту назначения вручную, он будет отображаться только один раз. Он специально использует компонент Link, который дублирует. –
Я думаю, это потому, что у вас нет маршрута назначения, вложенного в корневой маршрут. Попробуйте это: поместите «IndexRoute» и маршрут назначения под корневым маршрутом. Тогда компонент 'IndexRoute'' должен быть' home'. Родительский корневой маршрут должен быть контейнером для всего вашего приложения. –