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

Redux:我应该将日期格式化逻辑放在哪里,redux,Redux,我的问题很简单,我应该把类似于日期格式的逻辑放在哪里 假设我有一个Date对象,我最终将向用户显示为01/02/2017。从日期到字符串的转换应该在哪里进行 在容器组件的MapStateTrops中 在“表示”组件中,作为视图渲染的一部分 我的状态(在存储区中)显然应该存储为日期,因为我可能需要在其他地方用不同的格式表示它,所以我需要从日期转换为字符串 1的优点是,它使呈现组件尽可能地哑 2的优点是渲染逻辑保留在呈现组件中 我不确定这种类型的逻辑属于何处(另一个例子是从Integer到Strin

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

假设我有一个
Date
对象,我最终将向用户显示为
01/02/2017
。从
日期
字符串
的转换应该在哪里进行

  • 在容器组件的
    MapStateTrops
  • 在“表示”组件中,作为视图渲染的一部分
  • 我的状态(在存储区中)显然应该存储为
    日期
    ,因为我可能需要在其他地方用不同的格式表示它,所以我需要从
    日期
    转换为
    字符串

    1
    的优点是,它使呈现组件尽可能地哑

    2
    的优点是渲染逻辑保留在呈现组件中


    我不确定这种类型的逻辑属于何处(另一个例子是从
    Integer
    String
    的货币格式添加
    $
    .00
    )。

    有趣的问题,我可以为这两个选项辩护。我通常会使用位于我的reducer旁边的文件中的选择器(例如,如果您使用的是“ducks”或modules),这样即使是
    mapstatetops
    函数也是哑的


    但是,如果您的容器或其某些子容器可能需要使用该属性执行任何计算,则它们将需要
    日期
    对象,而不是字符串。号码/钱也一样。如果您需要对数量进行汇总、汇总或减分,字符串将不起作用。

    有趣的问题,我可以为这两个选项辩护。我通常会使用位于我的reducer旁边的文件中的选择器(例如,如果您使用的是“ducks”或modules),这样即使是
    mapstatetops
    函数也是哑的


    但是,如果您的容器或其某些子容器可能需要使用该属性执行任何计算,则它们将需要
    日期
    对象,而不是字符串。号码/钱也一样。如果需要对数量进行汇总、聚合或减分,字符串将不起作用。

    最好将此逻辑包含在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>
          )
       }
    
    ABC类扩展了React.Component{
    建造师(道具){
    超级(道具);
    this.state={dateVar:this.props.dataVar}
    }
    组件将接收道具(下一步){
    //日期格式化逻辑在这里
    this.setState({dateVar:})
    }
    render(){
    返回(
    {this.state.dateVar}
    )
    }
    

    }最好在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>
          )
       }
    
    ABC类扩展了React.Component{
    建造师(道具){
    超级(道具);
    this.state={dateVar:this.props.dataVar}
    }
    组件将接收道具(下一步){
    //日期格式化逻辑在这里
    this.setState({dateVar:})
    }
    render(){
    返回(
    {this.state.dateVar}
    )
    }
    
    }