Front-end-Web-Development-Interview-Question icon indicating copy to clipboard operation
Front-end-Web-Development-Interview-Question copied to clipboard

Using React JS

Open Prasanna-nadapana opened this issue 3 years ago • 0 comments

import React, { Component } from "react"; import { Switch, Route, Link, BrowserRouter as Router } from "react-router-dom";

import AddProduct from './components/AddProduct'; import Cart from './components/Cart'; import Login from './components/Login'; import ProductList from './components/ProductList';

import Context from "./Context";

export default class App extends Component { constructor(props) { super(props); this.state = { user: null, cart: {}, products: [] }; this.routerRef = React.createRef(); }

render() { return ( <Context.Provider value={{ ...this.state, removeFromCart: this.removeFromCart, addToCart: this.addToCart, login: this.login, addProduct: this.addProduct, clearCart: this.clearCart, checkout: this.checkout }} > <Router ref={this.routerRef}> <div className="App"> <nav className="navbar container" role="navigation" aria-label="main navigation" > <div className="navbar-brand"> <b className="navbar-item is-size-4 ">ecommerce <label role="button" class="navbar-burger burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample" onClick={e => { e.preventDefault(); this.setState({ showMenu: !this.state.showMenu }); }} > <div className={navbar-menu ${ this.state.showMenu ? "is-active" : "" }}> <Link to="/products" className="navbar-item"> Products </Link> {this.state.user && this.state.user.accessLevel < 1 && ( <Link to="/add-product" className="navbar-item"> Add Product </Link> )} <Link to="/cart" className="navbar-item"> Cart <span className="tag is-primary" style={{ marginLeft: "5px" }} > { Object.keys(this.state.cart).length } </Link> {!this.state.user ? ( <Link to="/login" className="navbar-item"> Login </Link> ) : ( <Link to="/" onClick={this.logout} className="navbar-item"> Logout </Link> )} <Switch> <Route exact path="/" component={ProductList} /> <Route exact path="/login" component={Login} /> <Route exact path="/cart" component={Cart} /> <Route exact path="/add-product" component={AddProduct} /> <Route exact path="/products" component={ProductList} /> </Switch> </Router> </Context.Provider> ); } }

Prasanna-nadapana avatar Dec 17 '21 13:12 Prasanna-nadapana