2015-11-18 6 views
0

у меня есть Реагировать Видео Компонент, который делает:реагировать-маршрутизатор html5 видео повторно рендеринга

<video autoPlay loop poster={this.props.poster}> 
    <source src={this.props.video} type="video/mp4" /> 
</video> 

как ребенок из моих маршрутов компонентов:

var Login = require('./containers/Login/Login.jsx'); 
var ForgotPassword = require('./containers/Login/ForgotPassword.jsx'); 

[ 
    <Route path="/login" component={Login} />, 
    <Route path="/login/forgot-password" component={ForgotPassword}/> 
] 

при изменении маршрутов видео компонент повторно отображает и я вижу перезагрузку в браузере вместе с перезапуском видео. есть ли способ избежать повторного рендеринга Video Component во время маршрутизации?

Мне удалось заставить его работать, используя тот же компонент в обоих маршрутах, и делая изменения пользовательского интерфейса по ссылке на URL.

я потерять компонентные события с этой работой около (componentWillUnmount, componentWillMount и т.д.)

будет признателен за любую помощь, благодаря

+0

возможно, вы ищете метод _shouldComponentUpdate_ [_ ** Ссылка здесь ** _] (http://buildwithreact.com/article/optimizing-with-shouldcomponentupdate) –

+0

трудное время, выясняя es6 для * mustComponentUpdate * ... оценят вашу помощь –

+0

Я добавил ответ, который вы можете просмотреть. –

ответ

0

Когда государство (или реквизит) изменяется, React компоненты всегда повторно рендеринг без внедрения shouldComponentUpdate или с использованием PreRenderMixin.

Если у вас есть какое-то условие повторного рендеринга, выполните shouldComponentUpdate иначе используйте PreRenderMixin просто.

Попробуйте, и поделитесь своим результатом. спасибо

+0

Я устал обоих методов без везения. также попробовал gaearon/react-pure-render. вы можете направить меня к реализации * shouldComponentUpdate * с es6? –

2

Как я сказал в вашем случае, вы можете попробовать использовать метод shouldComponentUpdate, но я не уверен в маршрутизации и как он работает с маршрутизацией. Требуется два аргумента nextProps & nextState и возвращает true или false в зависимости от вашей логики, и если это правда, то ваш компонент будет повторно отображен иначе не будет. Так вот пример:

shouldComponentUpdate(nextProps, nextState){ 
     console.log('Should Component Update'); 
     return nextState.count % 5 === 0 
    } 

В этом случае он делает только тогда, когда состояние разделите на 5. скрипки here также я использовал синтаксис ES6.

Я надеюсь, что это вам поможет.

Благодаря

+0

Я должен добавить эту функцию в класс VideoComponent, правильно? в любом случае, попробовал это без везения. пример jsfiddle любого спасителя был бы велик: D –