2017-06-02 80 views
0

我希望能夠在我的React應用程序的每個頁面上設置文檔標題。雖然我意識到我可以使用document.title但我不確定如何設置標題,這取決於通過異步調用獲取的數據。我使用Redux作爲服務器抓取。ajax調用後更改文檔標題

在我的組件類,我有:

componentDidMount() { 
    this.props.dispatch(fetchJob(this.props.match.params.slug)) 
} 

,但我不知道如何設置標題,一旦通話結束?

回答

0

在通話完成後,您可以使用回調來設置文檔標題,就像任何javascript承諾一樣。欲瞭解更多信息,看看在then()方法承諾:

then()方法返回一個Promise。它最多需要兩個參數:Promise的成功和失敗情況的回調函數。


所以,你的代碼是:

componentDidMount() { 
    this.props.dispatch(fetchJob(this.props.match.params.slug)).then(() => { 
    document.title = "Your title"; 
    }) 
} 
+0

所以我需要調整我的fetchJob函數嗎? – tommyd456

+0

不需要。上面的代碼應該可以工作。嘗試一下。 – Chris

+0

是的,我有。 '無法讀取'屬性',然後'未定義' – tommyd456

0

強烈建議使用middleware(你可以創建自己的一個)管理的東西,如:動畫,記錄,分析,等等。

所以你不會污染你的應用程序的邏輯。

如果你想讓它成爲你的應用程序的一部分,在componentWillReceivePropscomponentDidUpdate(我建議第一個)裏面的組件內部實現這樣的邏輯,並更新slug。當然,你應該把這部分代碼放在後面,什麼時候更新你的標題