INSERT GRAPHIC HERE (include hyperlink in image)
Subtitle or Short Description Goes Here
| { | |
| isDataFetched ? renderX() : renderPlaceholders(); | |
| } |
| useEffect(() => { | |
| fetch("https://www.googleapis.com/books/v1/volumes/?maxResults=30&q=danbrown") | |
| .then(response => response.json()) | |
| .then(responseJson => { | |
| const { items } = responseJson; | |
| const booksList = items.map(book => { | |
| const { | |
| volumeInfo: { title, authors, imageLinks }, | |
| id: bookId |
| const [books, setBooks] = useState([...new Array(10).fill({})]); | |
| const [isDataFetched, setDataFetched] = useState(false); |
| export default function App() { | |
| const [books, setBooks] = useState([...new Array(10).fill({})]); | |
| const [isDataFetched, setDataFetched] = useState(false); | |
| useEffect(() => { | |
| fetch( | |
| "https://www.googleapis.com/books/v1/volumes/?maxResults=30&q=danbrown" | |
| ) | |
| .then(response => response.json()) | |
| .then(responseJson => { |
| const BookCardPlaceholderComponent = () => ( | |
| <Placeholder | |
| Animation={ShineOverlay} | |
| style={{ | |
| marginVertical: 6, | |
| marginHorizontal: 15, | |
| borderRadius: 4 | |
| }} | |
| Left={props => ( | |
| <PlaceholderMedia |
| const BookCardComponent = props => { | |
| const { thumbnail, title, authors, onPress } = props; | |
| return ( | |
| <View style={styles.shadow}> | |
| <TouchableOpacity | |
| onPress={onPress} | |
| style={{ | |
| flexDirection: "row", | |
| padding: 8 |
| export default class App extends React.Component { | |
| constructor(props) { | |
| super(props); | |
| setI18nConfig(); // set initial config | |
| } | |
| componentDidMount() { | |
| RNLocalize.addEventListener("change", this.handleLocalizationChange); | |
| } |
| const translationGetters = { | |
| // lazy requires (metro bundler does not support symlinks) | |
| ar: () => require("./src/translations/ar.json"), | |
| en: () => require("./src/translations/en.json"), | |
| fr: () => require("./src/translations/fr.json") | |
| }; | |
| const translate = memoize( | |
| (key, config) => i18n.t(key, config), | |
| (key, config) => (config ? key + JSON.stringify(config) : key) |
| import React from "react"; | |
| import * as RNLocalize from "react-native-localize"; | |
| import i18n from "i18n-js"; | |
| import memoize from "lodash.memoize"; // Use for caching/memoize for better performance | |
| import { | |
| I18nManager, | |
| SafeAreaView, | |
| ScrollView, | |
| StyleSheet, |