2017-02-05 89 views
0

我的問題很簡單,我應該在哪裏放置類似於日期格式的邏輯?Redux:我應該在哪裏放置日期格式化邏輯

比方說,我有一個Date對象,我最終將顯示爲01/02/2017給用戶。我應該在哪裏做DateString的轉換?

    在容器組件的表象成分
  1. mapStateToProps
  2. ,渲染視圖的一部分

我的狀態(在商店)顯然不應該是專賣店爲Date,因爲我可能需要在其他地方以不同格式顯示它,所以我需要將其從Date轉換爲String

1的優點是它使演示組件儘可能愚蠢。

2的優點是呈現邏輯保留在表示組件中。

我不知道在哪裏這個類型的邏輯屬於(另一個例子是錢Integer格式到String添加$.00)。

回答

0

有趣的問題,我可以捍衛這兩個選項。我通常會使用位於我的reducer旁邊的文件中的選擇器(例如,如果您使用「duck」或模塊),以至於即使mapStateToProps函數也是愚蠢的。

但是,如果您的容器或其某些子項需要使用該道具執行任何計算,那麼它們將需要Date對象,而不是字符串。與數量/金錢相同。如果您需要彙總,彙總或減少數量,則字符串將不起作用。

0

最好在componentWillReceiveProps生命週期方法中包含此邏輯。所以每當你得到新的道具日期格式化邏輯將被執行並更新本地組件的狀態變量,然後將會呈現該狀態變量。示例代碼如下:

class ABC extends React.Component{ 
    constructor(props){ 
    super(props); 
    this.state= { dateVar: this.props.dataVar } 
    } 
    componentWillReceiveProps(nextProps) { 
    //date formatting logic goes here 
    this.setState({ dateVar: <formatted-date> }) 
    } 
    render() { 
     return(
     <div>{this.state.dateVar}</div> 
    ) 
    } 

}