2016-09-06 28 views
1

我正在使用React Intl進行內部化,必須在render()方法中寫入this.props.intl.formatMessage({id: 'some.message.id'}, values)to get a translated string。 現在,裝飾者應該如何爲此提供一個快捷功能,所以我可以像_t('some.message.id', values)或類似的那樣做?如何一般性地爲裝飾器編寫React.js組件的快捷方法?

我知道我可能只需編寫另一個擴展React.Component的類或將該組件包裝在另一個類或任何其他類中,但我想用裝飾器(用於學習和理解目的)來完成它,如果可以的話這樣做。

回答

0

這裏的東西,讓你開始:

function mydecorator(target, key, descriptor) { 
    const method = descriptor.value; 

    descriptor.value = function(...args) { 
    args.push(this.props.intl.formatMessage); // may need `.bind(...)` 
    return method.apply(this, args); 
    } 
} 

要使用:

@mydecorator 
render(_t) { 
    ... 
} 

的裝飾器替換render與推送參考this.props.intl.formatMessage到後來獲得通過的參數列表功能在致電原始render(其中,AFAIK,沒有參數,所以你可能可以通過取出args變量縮短代碼)。

你當然可以推出一箇中間函數作爲參數,它可以更好地處理參數等。

相關問題