2017-11-17 8 views
0

Next.js反応アプリを作成しようとしています。要件の1つは、YouTubeプレーヤーがページを変更するときに持続しなければならないということです。問題は、次の方法で可能かどうかわからないことです。構造にかかわらず、ページはいつでも再マウントされるようです。Next.js永続的なコンポーネント - ページを変更した後でも再生されるYoutube埋め込み

私のアプリでは、親コンポーネントとして機能するpage.jsにインデックスをエクスポートします。

<Media/> //Youtube player 

page.jsは常に再読み込みされ、プレイヤーはリロードします。

page.js:

import React from 'react'; 
import { Provider } from 'react-redux'; 
import { checkLang } from '../helpers/langSupport'; 
import { changeLang } from '../store/actions/langAction'; 
import store from '../store/store'; 
import { Router } from '../config/router'; 
import Media from './youtube'; 
import Head from './head'; 
import Nav from './nav'; 

const childPage = (ChildPage) => { 
    return (
     class Page extends React.Component { 
      componentDidMount(){ 
       this.checkLanguage() 
      } 

      checkLanguage() { 
       checkLang(this.props.url, (status, result) => { 
        if(status){ 
         store.dispatch(changeLang(result)) 
        }else{ 
         Router.pushRoute('/en'+this.props.url.asPath) 
        } 
       }) 
      } 

      render() { 
       return (
        <Provider store={store}> 
         <div> 
          <Head /> 
          <Nav /> 
          <ChildPage {...this.props} /> 
          <Media/> 
         </div> 
        </Provider> 
       ) 
      } 
     } 
    ) 
} 

export default childPage; 

index.js:

import React from 'react'; 
import { connect } from 'react-redux' 
import { add, minus } from '../store/actions/countAction'; 
import Page from '../components/page'; 

export class Index extends React.Component { 
    render() { 
    return (
     <div> 
     <div className="hero"> 
      Count: {this.props.count.count} 
      <br/><br/> 
      <button onClick={()=>this.props.dispatch(add(1))}>Add</button> 
      <button onClick={()=>this.props.dispatch(minus(1))}>Minus</button> 
     </div> 
     <style jsx>{` 
      .hero{ 
      margin-left: 50px; 
      } 
     `}</style> 
     </div> 
    ) 
    } 
} 

export default Page(connect(state=>state)(Index)); 

答えて

関連する問題