我的问题很简单,我应该在哪里设置类似于日期格式的逻辑?
我们说我有一个Date
对象,我最终会将01/02/2017
显示给用户。我应该在哪里进行从Date
到String
的转换?
mapStateToProps
中我的状态(在商店中)显然应该是Date
商店,因为我可能需要在其他地方使用不同的格式,因此我需要从Date
转换为{{ 1}}。
String
的优势在于它使表现性成分尽可能愚蠢。
1
的优点是渲染逻辑保留在表示组件中。
我不确定这种类型的逻辑所属的位置(另一个例子是从2
到Integer
添加String
和$
的货币格式。< / p>
答案 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>
)
}
}