2017-07-01 78 views
-2

我真的不明白我們如何能夠從數據庫中通用(同構)服務器端呈現獲取數據反應的應用。我們不能在componentWillMount()等等...因爲它是JavaScript,在客戶端工作!沒有任何與數據庫的連接。能怎樣?獲取數據之前呈現普遍反應應用

我需要從數據庫數據呈現的HTML。服務器應該用數據返回HTML。處理承諾的動作,這就是爲什麼他們在渲染前不返回數據。

陣營與Ajax的請求取數據。但是,我們需要發送多個Ajax的請求來呈現一個頁面?...

嗯,這是非常令人困惑。

+0

請不要減,說明 –

+0

是,你使用Ajax請求(XHR),但人們傾向於使用Fetch API或Axios,因爲這些都有承諾。您獲取的用於填充組件的初始數據必須在ComponentDidMount()中初始化。其他人爲了檢查你點擊了什麼,並且想要獲取一些數據,這應該在生命週期中作爲一個單獨的方法來完成。如果你指定了你正在使用的堆棧(例如,你使用了什麼數據庫?)我可以給你一個代碼示例 – carkod

+0

另外,你不發送多個Ajax請求來渲染頁面。你(1)渲染頁面(2)獲取數據 – carkod

回答

0

你可以呈現來自服務器的數據中隱藏的HTML組件,每當服務器端的網站加載。顯示那些在view.like

<div id="load-first" style="display:none">{{your_data}}</div> 

現在,當頁面加載然後渲染內部HTML的JSON數據或別的東西,在視圖中像

import React, {Component} from 'react'; 

class MyComponent extends Component{ 
    constructor(props){ 
     super(props); 
     this.state={myData: {}} 
    } 

    componentDidMount(){ 
     let data = document.getElementById("load-first").innerHTML; 
     // if json 
     data = JSON.parse(data); 
     this.setState({myData: data}); 
    } 

    render(){ 
     return (
      <div>{this.state.myData}</div> 
     ); 
    } 
} 
+0

你不明白。我需要從HTTP響應主體中的數據庫數據呈現服務器返回。理解?像componentDidMount或componentWillMount這樣的愚蠢的東西不起作用!因爲它是JS。客戶端的JS不能從HTTP響應體中的數據庫返回數據。 –

+0

在PHP中有一個名爲header()的函數,您可以在其中傳遞鍵值對。您是否嘗試過使用它將內容添加到HTTP響應標頭中。 也有一個計算器的問題,我遇到了[鏈接](https://stackoverflow.com/questions/563035/can-i-pass-custom-data-in-the-http-header)你檢查它出。 –

+0

你不明白。我不需要任何頭等。我需要從服務器獲取html中的新聞。沒有任何行動在客戶端發送。 –

相關問題