从获取响应中编辑数据

时间:2017-12-12 02:34:54

标签: javascript reactjs react-native

render(){
  let events = this.props.data.map(function(eventsData, index){
    return (
      <View style={Cstyles.postContainerEvent} key={index}>
        <View style={Cstyles.subPostContainer}>
          <Text style={Cstyles.postTitleEvent}>{eventsData.title}</Text>
          <Text style={Cstyles.objDescription}>{eventsData.description}</Text>
          <View style={Cstyles.postSubEvent}>
            <Text style={Cstyles.postSubCatEvent}>{eventsData.venue}</Text>
            <Text style={Cstyles.postSubCatEvent}>{eventsData.time}</Text>
          </View>
          <View style={Cstyles.postSubEvent}>
            <Text style={Cstyles.postSubCatEventAddress}>{eventsData.address}</Text>
            <Text style={Cstyles.postSubCatEvent}>{eventsData.price}</Text>
            <Text style={Cstyles.postSubCatEventDate}>{eventsData.month + " " + eventsData.day}</Text>
          </View>
        </View>
      </View>
    )
  });

我在父组件上使用Fetch API获取此数据。收到的一个对象(eventsData.month)是一个1-12的字符串,具体取决于月份:我在12月收到“12”。我想把“12”变成“十二月”,等等其他几个月。

3 个答案:

答案 0 :(得分:1)

当我failed to find a javascript native function to convert a number into a date时,我很惊讶,因此,我不想将框架带入其中,我使用了这样的东西:

显然,如果你想要三个字母的版本,这对除英语以外的任何东西都有用。但它并没有引入数千行框架:P

var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] ;

for( var i = 1; i <= 12; i++){
 document.body.innerHTML += "<p>" +  months[i-1] +"</p>"
}

答案 1 :(得分:1)

我喜欢Dan Farrell的回答。我注意到你也可以使用一个对象来提高可读性。

&#13;
&#13;
var monthMap = {
  "1": "Jan",
  "2": "Feb",
  "3": "Mar",
  "4": "Apr",
  "5": "May",
  "6": "Jun",
  "7": "Jul",
  "8": "Aug",
  "9": "Sep",
  "10": "Oct",
  "11": "Nov",
  "12": "Dec",
}
document.body.innerHTML += monthMap["12"];
&#13;
&#13;
&#13;

我还要提到的是,如果您愿意添加外部库,moment.js非常好,值得研究。它不仅仅是日期格式化。

答案 2 :(得分:0)

导入Moment.js

然后这样做

<Text style={Cstyles.postSubCatEventDate}>{moment(eventsData.month, "M").format("MMMM") + " " + eventsData.day}</Text>

这会将两位数字变成一个完整的月份字符串。所以&#39; 06&#39;会变成“六月”。