Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
  3. import { Container } from 'reactstrap';
  4. import AppNavbar from './components/layout/AppNavbar';
  5. import ComCalc from './components/pages/ComCalc';
  6. import About from './components/pages/About';
  7. import Result from './components/Result';
  8.  
  9. import 'bootstrap/dist/css/bootstrap.min.css';
  10. import './App.css';
  11.  
  12. class App extends Component {
  13. state = {
  14. formData: {
  15. homeAddr: '',
  16. remoteAddr: '',
  17. income: 0,
  18. homeCost: 0,
  19. workHours: 0,
  20. data: null
  21. }
  22. };
  23.  
  24. formChange = e => {
  25. let { name, value } = e.target;
  26. let formData = this.state.formData;
  27.  
  28. // prevent NaN error when returning empty value to float type
  29. if (e.target.value === 'number' && !value) value = 0;
  30.  
  31. formData[name] = value;
  32. this.setState({ formData: formData });
  33. };
  34.  
  35. formUpdate = (...values) => {
  36. let formData = this.state.formData;
  37.  
  38. for (let i = 0; i < values.length; ++i) {
  39. const { name, value } = values[i];
  40. formData[name] = value;
  41. }
  42.  
  43. this.setState({ formData: formData });
  44. };
  45.  
  46. render() {
  47. return (
  48. <Router>
  49. <div className='App'>
  50. <AppNavbar />
  51. <Container>
  52. <Switch>
  53. <Route path='/about'>
  54. <About formData={this.state.formData} />
  55. </Route>
  56. <Route path='/'>
  57. <ComCalc
  58. {...this.props}
  59. formData={this.state.formData}
  60. formChange={this.formChange}
  61. formUpdate={this.formUpdate}
  62. />
  63. <Result data={this.state.formData.data} />
  64. </Route>
  65. </Switch>
  66. </Container>
  67. </div>
  68. </Router>
  69. );
  70. }
  71. }
  72.  
  73. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement