Redux:我应该在哪里放置日期格式化逻辑

时间:2017-02-05 02:26:34

标签: redux

我的问题很简单,我应该在哪里设置类似于日期格式的逻辑?

我们说我有一个Date对象,我最终会将01/02/2017显示给用户。我应该在哪里进行从DateString的转换?

  1. 在容器组件的mapStateToProps
  2. 在演示组件中,作为视图渲染的一部分
  3. 我的状态(在商店中)显然应该是Date商店,因为我可能需要在其他地方使用不同的格式,因此我需要从Date转换为{{ 1}}。

    String的优势在于它使表现性成分尽可能愚蠢。

    1的优点是渲染逻辑保留在表示组件中。

    我不确定这种类型的逻辑所属的位置(另一个例子是从2Integer添加String$的货币格式。< / p>

2 个答案:

答案 0 :(得分:2)

有趣的问题,我可以为两种选择辩护。我通常会使用一个选择器,它位于我的reducer旁边的文件中(如果您正在使用&#34; ducks&#34;或者模块),这样即使mapStateToProps函数也是哑的。< / p>

但是,如果您的容器或其某些孩子需要使用该道具进行任何计算,那么他们将需要Date对象,而不是字符串。与数字/金钱相同。如果您需要汇总,汇总或减去数量,字符串将无效。

答案 1 :(得分: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>
      )
   }

}