Horizontal and vertical center made easy
Forget about any complicated way, just use Flexbox and set up horizontal center and vertical center in the container.
Forget about any complicated way, just use Flexbox and set up horizontal center and vertical center in the container.
We are going to fetch flights data to create our makers. Do not set the map in each marker, the clusterization will set it up instead.
Using an array to keep track of where we came from. Try it, click the right top buttons to navigate and check the backward arrow, any time you go to the Main page the tracking will be reseted.
First of all read the whole post, secondly install Create React App globally and create an app using create-react-app my-app, then before any coding add packages to your app. As soon as you finish all package installations you can start coding using my basics code snippets if you need to 🙂
npm i -g create-react-app
This will allow you to create React Apps with no build configuration anywhere in your computer.
create-react-app my-app
cd my-app/
npm start
This will create a React App called my-app pointing to http://localhost:3000/, any time you save your files your app will be updated automatically.
Within my-app folder.
npm i -S bootstrap
npm i -S react-bootstrap
npm i -S react-router-bootstrap
This will allow us to use this front-end framework in a easier way (with React).
For example lets code our home page (home.js)
import React from 'react'; import { Grid, Row, Col, Jumbotron, Image } from 'react-bootstrap'; import people from '../media/people.png'; function Home(props) { const t = props.t; // we will pass the translation function via props return ( <div> <Grid> <Jumbotron> <h1>{t('Open knowledges')}</h1> <p>Cool text right here</p> </Jumbotron> </Grid> <Grid> <Row> <Col lg={12}> <p>I love paragraphs.</p> <p>I love paragraphs.</p> </Col> </Row> <Row> <Col lg={12}> <p>I love paragraphs.</p> <Image className="detached" src={people} responsive /> </Col> </Row> </Grid> </div> ); } export default Home;
Anything that you would use repeatedly in other pages of your website should be in a different file (component), such as the navigation bar and the footer. Create a layout component to organize your components all together (layout.js)
import React, { Component } from 'react'; import Navigation from '../components/Navigation'; import Footer from '../components/Footer'; class Layout extends Component { render() { return ( <div> <Navigation t={this.props.t}></Navigation> {this.props.children} <Footer></Footer> </div> ); } } export default Layout;
npm i -S react-router
npm i -S react-router-dom
This will make our website’s routing easier.
Let’s create our website/app (index.js) with two pages, for example Home (home.js) and About (about.js)
import React from 'react'; import ReactDOM from 'react-dom'; import { BrowserRouter, Route } from 'react-router-dom'; import './index.css'; import 'bootstrap/dist/css/bootstrap.css'; import 'bootstrap/dist/css/bootstrap-theme.css'; import Layout from './pages/Layout'; import Home from './pages/Home'; import About from './pages/About'; import i18n from './i18n'; let t = i18n.t.bind(i18n); // for translations ReactDOM.render( <BrowserRouter> <div> <Route exact path="/" render={() => <Layout t={t}><Home t={t} /></Layout>} /> <Route exact path="/about" render={() => <Layout t={t}><About t={t} /></Layout>} /> </div> </BrowserRouter>, document.getElementById('root') );
npm i -S i18next
This will let us do our website/app internationalization.
import i18n from 'i18next'; i18n .init({ fallbackLng: 'en', lng: navigator.language.split('-')[0], debug: true, resources: { en: { translation: { "Hello": "Hola", "Bye": "Adiós" } } } }); export default i18n;
Futher details using i18n in this post: Create a multilingual React website.
. +-- _components | +-- Footer.css | +-- Footer.js | +-- Navigation.css | +-- Navigation.js +-- _media | +-- logo.svg +-- _pages | +-- Layout.js | +-- Home.js | +-- About.js +-- i18n.js +-- index.css +-- index.js