Passing props via router
This commit is contained in:
parent
c83200cd1c
commit
cbdbeb2b9e
4 changed files with 80 additions and 7 deletions
|
@ -1,28 +1,35 @@
|
||||||
import React from 'react'
|
import React, { useState } from 'react'
|
||||||
import { Router as ReactRouter, Route, Switch } from 'react-router-dom'
|
import { Router as ReactRouter, Route, Switch } from 'react-router-dom'
|
||||||
import { createBrowserHistory as createHistory } from 'history'
|
import history from '../history.js'
|
||||||
|
// import { createBrowserHistory as createHistory } from 'history'
|
||||||
|
|
||||||
/* Site */
|
/* Site */
|
||||||
import Home from '../views/Home'
|
import Home from '../views/Home'
|
||||||
// import Team from '../views/Team'
|
import Team from '../views/Team'
|
||||||
// import Member from '../views/Member'
|
// import Member from '../views/Member'
|
||||||
|
|
||||||
const history = createHistory()
|
// const history = createHistory()
|
||||||
history.listen(location => {
|
history.listen(location => {
|
||||||
window.scrollTo(0,0)
|
window.scrollTo(0,0)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default function Router(props) {
|
export default function Router(props) {
|
||||||
|
let [team, setTeam] = useState('Rodrigo')
|
||||||
|
|
||||||
|
let teamCallback = (el) => {
|
||||||
|
setTeam(el)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ReactRouter history = { history }>
|
<ReactRouter history = { history }>
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route exact path='/' component={Home} />
|
<Route exact path='/' render={(props) => <Home teamCallback={teamCallback} {...props} />} />
|
||||||
|
<Route exact path='/team' render={(props) => <Team teamId={team} {...props} />} />
|
||||||
</Switch>
|
</Switch>
|
||||||
</ReactRouter>
|
</ReactRouter>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// <Route exact path='/team' render={(props) => <Team {...props} />} />
|
|
||||||
// <Route exact path='/member' render={(props) => <Member {...props} />} />
|
// <Route exact path='/member' render={(props) => <Member {...props} />} />
|
||||||
|
|
||||||
// class Router extends React.Component {
|
// class Router extends React.Component {
|
||||||
|
|
3
src/history.js
Normal file
3
src/history.js
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { createBrowserHistory } from 'history'
|
||||||
|
|
||||||
|
export default createBrowserHistory()
|
|
@ -1,10 +1,12 @@
|
||||||
|
// MARK: Definitions
|
||||||
import React, { useState, useEffect } from 'react'
|
import React, { useState, useEffect } from 'react'
|
||||||
|
import history from '../history.js'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import config from '../config.json'
|
import config from '../config.json'
|
||||||
import Team from '../components/Team.jsx'
|
import Team from '../components/Team.jsx'
|
||||||
import FilterForm from '../components/FilterForm.jsx'
|
import FilterForm from '../components/FilterForm.jsx'
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home(props) {
|
||||||
// MARK: State
|
// MARK: State
|
||||||
let [loading, setLoading] = useState(true)
|
let [loading, setLoading] = useState(true)
|
||||||
let [loadingDetails, setLoadingDetails] = useState(true)
|
let [loadingDetails, setLoadingDetails] = useState(true)
|
||||||
|
@ -93,6 +95,9 @@ export default function Home() {
|
||||||
|
|
||||||
let selectTeam = (selectedTeam) => {
|
let selectTeam = (selectedTeam) => {
|
||||||
console.log('Selected team ' + selectedTeam)
|
console.log('Selected team ' + selectedTeam)
|
||||||
|
|
||||||
|
props.teamCallback('Pedroso')
|
||||||
|
history.push('/team')
|
||||||
}
|
}
|
||||||
|
|
||||||
let selectUser = (selectedUser) => {
|
let selectUser = (selectedUser) => {
|
||||||
|
|
58
src/views/Team.jsx
Normal file
58
src/views/Team.jsx
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
// MARK: Definitions
|
||||||
|
import React, { useState, useEffect } from 'react'
|
||||||
|
import axios from 'axios'
|
||||||
|
import config from '../config.json'
|
||||||
|
import FilterForm from '../components/FilterForm.jsx'
|
||||||
|
|
||||||
|
export default function User({ teamId }) {
|
||||||
|
// MARK: State
|
||||||
|
let [loading, setLoading] = useState(true)
|
||||||
|
let [team, setTeam] = useState([])
|
||||||
|
let [filteredTeams, setFilteredTeams] = useState([])
|
||||||
|
|
||||||
|
// MARK: Effect
|
||||||
|
// MARK: - Load user info from Tempo backend on initialization
|
||||||
|
useEffect(() => {
|
||||||
|
let fetchData = async() => {
|
||||||
|
setLoading(true)
|
||||||
|
try {
|
||||||
|
let result = await axios(config.api + '/team/2')
|
||||||
|
if (result.data) {
|
||||||
|
setTeam(result.data)
|
||||||
|
}
|
||||||
|
setLoading(false)
|
||||||
|
}
|
||||||
|
catch(err) {
|
||||||
|
setLoading(false)
|
||||||
|
console.log('Fetch data error: ' + err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchData()
|
||||||
|
}, [teamId])
|
||||||
|
|
||||||
|
// MARK: Callbacks
|
||||||
|
// let filterCallback = (e) => {
|
||||||
|
// let filtered = teams.filter(team => {
|
||||||
|
// return team.name.toUpperCase().includes(e.target.value.toUpperCase())
|
||||||
|
// })
|
||||||
|
|
||||||
|
// setFilteredTeams(filtered)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// MARK: Return
|
||||||
|
return (
|
||||||
|
<div className='user'>
|
||||||
|
<h1>Team</h1>
|
||||||
|
|
||||||
|
{teamId !== undefined &&
|
||||||
|
<p>{teamId}</p>
|
||||||
|
}
|
||||||
|
|
||||||
|
{loading ? (<div>Loading...</div>) : (
|
||||||
|
team !== undefined &&
|
||||||
|
<h2>{team.name}</h2>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue