Я работаю над приложением React Native, где мне нужно, чтобы post_date
, который я получаю от стороннего API, не отображался как: 2019-05-10 11:26:39
, а вместо этого отображался: x many days ago
.
Я попытался установить React-Intl, а затем реализовать его в App.js
вот так:
import React from "react";
import { StyleSheet, Text, View } from "react-native";
import {
createBottomTabNavigator,
createStackNavigator,
createAppContainer
} from "react-navigation";
import { Provider } from "react-redux";
import { IntlProvider } from "react-intl";
import store from "./store";
import AuthScreen from "./screens/AuthScreen";
import WelcomeScreen from "./screens/WelcomeScreen";
import MapScreen from "./screens/MapScreen";
import DeckScreen from "./screens/DeckScreen";
import SettingsScreen from "./screens/SettingsScreen";
import ReviewScreen from "./screens/ReviewScreen";
const MainNavigator = createAppContainer(
createBottomTabNavigator({
welcome: WelcomeScreen,
auth: AuthScreen,
main: {
screen: createBottomTabNavigator({
map: MapScreen,
deck: DeckScreen,
review: {
screen: createStackNavigator({
review: ReviewScreen,
settings: SettingsScreen
})
}
})
}
})
);
export default class App extends React.Component {
render() {
return (
<Provider store={store}>
<View style={styles.container}>
<IntlProvider locale="en">
<MainNavigator />
</IntlProvider>
</View>
</Provider>
);
}
}
А в моем DeckScreen.js
вот так:
import React, { Component } from "react";
import { View, Text, Platform } from "react-native";
import { MapView } from "expo";
import { connect } from "react-redux";
import { Card, Button } from "react-native-elements";
// import Moment from "react-moment";
import { FormattedRelative } from "react-intl";
import Swipe from "../components/Swipe";
import * as actions from "../actions";
class DeckScreen extends Component {
renderCard(job) {
return (
<Card title={job.title}>
<View style={{ height: 300 }}>
<MapView
scrollEnabled={false}
style={{ flex: 1 }}
cacheEnabled={Platform.OS === "android" ? true : false}
/>
</View>
<View style={styles.detailWrapper}>
<Text>{job.company.id}</Text>
<FormattedRelative value={job.post_date.toString()} />
</View>
<Text>
{job.description.replace(/<span>/g, "").replace(/<\/span>/g, "")}
</Text>
</Card>
);
}
Я чувствую, что я ближе к получению того, что хочу, с React-Intl, чем с Momentjs, но я получаю эту ошибку:
console.error: «[React Intl] Ошибка форматирования относительного времени. RangeError: значение даты, предоставленное IntlRelativeFormat#format(), не находится в допустимом диапазоне».
Мой код неправильно отформатирован? У кого-нибудь есть опыт реализации FormattedRelative
из React-Intl?
Я знаю, что могу использовать toDateString()
, чтобы избавиться от временной метки 2019-05-10 11:26:39
, но когда я пытаюсь реализовать ее через <FormattedRelative value={job.post_date.toDateString()} />
, я продолжаю получать то же сообщение об ошибке.
post_date
, так как это одно из свойств API, которое я использую в приложении. 14.05.2019