我發現了一些問題,但是它們不能與react-router版本4一起工作。真的很奇怪,在文檔中沒有任何有關這方面的信息。如何在渲染反應同構應用程序之前在服務器中獲取數據?
回答
您可以在構造函數中使用axios,根據反應Lifecycles,構造函數在render()之前出現;
例子:
constructor(props) {
super(props);
this.state = {
items: [],
};
axios.get('http://into-the-feed-api.cloud.globoi.com/')
.then(res => {
const index = this.getIndex(res.data);
if (index) {
this.setState({
items: [res.data[index]].concat(res.data.slice(0, index).concat(res.data.slice(index + 1, res.data.length))),
});
} else {
this.setState({ items: res.data });
}
});
this.changeHeaderExpanded = this.changeHeaderExpanded.bind(this);
}
事情必須改變了,但早在2015年我寫了有關的文章。您可以閱讀它here
主要想法是將您的行爲納入承諾。服務器端,您必須調用適當的操作(取決於路由),並在致電React.renderToString()
(這是同步的)之前等待承諾履行。然後你需要找到一種方法來同步服務器與客戶端計算出的狀態,以避免不必要的做同樣的請求。在文章中,我解釋了我將狀態傳遞給窗口對象。
但是它又是在2015年,它可能已經過時了。
如何做到這一點? –
您需要獲取Web服務器上的數據,然後將數據傳遞給您的(愚蠢)組件,該組件只會呈現,而不會執行很多邏輯。
如果您需要更新客戶端上的數據,請查看套接字解決方案或僅在componentdidmount()中創建間隔提取。
我們目前正在研究這個問題,我們正在使用Airbnb的Hypernova來處理通用渲染,但是您仍然需要一個網絡服務器來允許組件映射一個我們可以緩存的網址並將服務器端包含到我們的網站中頁。 因此,在該網絡服務器上,您可以執行讀取和傳遞,以便將組件的初始狀態設爲html。
你有沒有工作的例子? –
https://blog.tableflip.io/server-side-rendering-with-react-and-redux/ - 我在閱讀本文後解決了我的問題。
- 1. 在服務器上創建反應應用渲染組件
- 2. 如何在android應用程序中同步服務器數據?
- 3. 在服務器和iOS應用程序之間同步數據
- 4. 陣營服務器端渲染應用程序 - 如何更新元數據
- 5. 服務器渲染的SyntaxError與之反應/終極版/快遞
- 6. 如何在android應用程序中從Web服務器獲取數據?
- 7. 在應用程序服務器之間同步服務狀態
- 8. 在渲染前反應DOM offsetHeight
- 9. 在Javascript之後獲取HTML - 服務器應用程序
- 10. 服務器渲染在靜態網站上反應js
- 11. 服務器使用Rails渲染+反應護欄寶石+反應路由器
- 12. 如何構建反應應用程序以正確渲染組件?
- 13. 使用反應渲染數據
- 14. 如何在應用程序完成時從服務器獲取數據?
- 15. 在TextField中渲染django應用程序
- 16. 在IFrame應用程序中FBML渲染
- 17. 在WPF應用程序中渲染OpenGL
- 18. Next.js + Redux服務器端渲染:有數據,但不在服務器端渲染
- 19. 渲染服務器和客戶端上的Backbone.js應用程序
- 20. 服務器端渲染和應用程序外殼模型
- 21. 在服務器應用程序之間共享數據
- 22. 在C++應用程序和服務器之間傳輸數據
- 23. 如何在Visual Studio 2015應用程序之前啓動服務?
- 24. 獲取數據之前呈現普遍反應應用
- 25. 在渲染express之前執行函數獲取路由器NodeJS
- 26. 在應用服務之前配置WAF應用程序網關
- 27. 在nginx服務器上反應路由器應用程序
- 28. 使用process.env時,反應服務器端渲染
- 29. 使用express和es6來渲染反應和jsx服務器端
- 30. 異步服務器端渲染使用REDX和反應
And ...? Axios回報承諾,而不是數據本身。如果我打開頁面的html代碼,則沒有任何來自API的數據。理解?但我需要這個數據在HTML(從服務器的HTML)! –