2017-07-12 10 views
2

firebaseに新しいものがありますが、すべてのデータをfirebaseに置く前に、ちょっと単純なテスト反応コンポーネントを書きましたが、残念ながらサーバで動作させることができませんでしたSide Pre-Rendering。それは私にとってSEOのフレンドリーなものにすることは非常に重要です。私は解決策についてインターネット上で検索していますが、まだそれを理解できませんでした。Firebaseと反応スナップショットで反応する(プレレンダリング)

以下の簡単なコードはReact-Snapshotで初期状態を生成しますが、ページを開いて初期状態を表示して新しい状態に更新しますが、データを取得する初期状態オブジェクトを作成する必要がありますFirebaseから直接取得し、React-Snapshotで静的HTMLを生成します。

SEOによって
class FirebaseTestingComponent extends Component { 
constructor(){ 
    super(); 
    this.state = { 
    speed: 10 
    }; 

} 

componentWillMount(){ 
    const rootRef = firebase.database().ref().child('react'); 
    const speedRef = rootRef.child('speed'); 
    speedRef.on('value', snap => { 
    this.setState({ 
     speed: snap.val() 
    }); 
    }); 
} 


render(){ 
    return (
    <div> 
     <h1>{this.state.speed}</h1> 
    </div> 

); 

} 

}

+0

チュン、まだ反応スナップショットまたはサーバー側のレンダリングを使用していますか? – jasan

+0

リアクションスナップショットでルートがカバーされていない場合、firebaseは自動的に200.htmlにフォールバックしますか? – jasan

+0

@ジャサンそれはあなたの助言のために非常に多くの – dgrijuela

答えて

0

優しいそれはWebSocketのようなものだ)私はあなたの代わりに、動的(ないSEOの専門家)の静的なコンテンツをしたいと仮定していますが.on使用する場合firebaseは(特に非同期的に実行、問題ではありません。もしあなたがそうするなら、この場合はマウントまたはマウントしません。
私の謙虚な提案は、ページをレンダリングする前にサーバーのfirebaseからフェッチして(FirebaseをサポートしているJavaとノードを確認してください)、フェッチした値で初期状態を設定すると、初期状態は火災基地からのものです。それでは、後で値を入力するために.on()を使用することができます。

+0

ありがとうございます。あなたが説明したように、それは本当に多くの意味があります。心から感謝する。 –

+0

問題がなければ、あなたが私の意見に同意するなら、正解とマークしてください。ありがとう –

+0

はい。私はあなたの意見に完全に同意します。 –

関連する問題