gpt4 book ai didi

reactjs - React router v4 - 如何访问通过重定向传递的状态?

转载 作者:行者123 更新时间:2023-12-03 13:25:32 25 4
gpt4 key购买 nike

我正在react的帮助下制作一个登录页面,当登录成功时,该页面会重定向到另一个页面。让我将登录成功时渲染的组件称为“A”。我想将从数据库获取的数据传递给组件 A,我通过将其传递到“重定向”组件的“状态”属性来实现此目的。但是,我不明白如何在最终呈现组件 A 的“Route”组件中访问此状态。谁能告诉我如何访问?

我的代码如下:

登录.js:

import React from 'react'
import Center from 'react-center'
import PropTypes from 'prop-types'
import classnames from 'classnames'
import isEmpty from 'lodash/isEmpty'
import { browserHistory } from 'react-router'
import { Route, Redirect } from 'react-router-dom'

import Courses from '../pages/Courses'
import Logo from './shared/Logo'
import Routes from './Routes'
import Tiles from './Tiles'

export default class LoginForm extends React.Component
{
constructor()
{
super()

this.state =
{
username: '',
password: '',
student: false,
instructor: false,
error_password: '',
error_username: ''
}

this.onChange = this.onChange.bind(this)
this.onSubmit = this.onSubmit.bind(this)
}

onChange(event)
{
this.setState({error_username:'', error_password:'', [event.target.name]: event.target.value})
console.log(this.state)
event.preventDefault()
}

onSubmit(event)
{
event.preventDefault()
if (this.state.username && this.state.password)
{
this.props.loginRequest({username: this.state.username, password: this.state.password})
.then(response =>
{
this.setState( // THE SERVER WILL SEND THE RELEVANT DATA HERE
{
username: '',
password: '',
student: response.data.student,
error_username: response.data.error_username,
error_password: response.data.error_password
})
})
}
else
this.setState({error_username: 'Please enter username', error_password: 'Please enter password.'})
}

render()
{
const styles =
{
buttonStyle:
{
margin: 'auto',
width: '83'
}
}

if (this.state.student) /// REDIRECT IS HAPPENING HERE
{
return (
<Redirect to = {{
pathname: '/loginS/student',
state: { course_information } /// HERE I WILL SEND THE RELEVANT INFORMATION THAT THE SERVER SENDS TO THE COMPONENT A
}}/> )
}
else if (this.state.instructor)
{
return <Redirect to = {'/loginI/instructor'} />
}
else
{
// NOT RELEVANT
}

return(

display
)
}
}

LoginForm.propTypes =
{
loginRequest: PropTypes.func.isRequired
}

路由.js

import React from 'react'
import { Switch, Route } from 'react-router-dom'

import Courses from '../pages/Courses'
import Login from './Login'
import Dashboard from './Dashboard'
import StudentsHandle from './StudentsHandle'
import CourseItem from './CourseItem'
import SemesterItem from './SemesterItem'
import Logo from './shared/Logo'
import Tiles from './Tiles'

export default class Routes extends React.Component
{
render()
{
return(
<Switch>
<Route exact path = '/' component = { Dashboard }/>
<Route exact path = '/loginS' component = { Login } />
<Route path = '/loginS/student' render = { (props) => < Tiles data = {this.props.coursesData} />} /> // HOW DO I ACCESS THE PROPS REDIRECT SENDS HERE?
<Route path = '/instructor' component = { Courses } />
</Switch>
);
}
}

最佳答案

您可以使用 location 属性来访问您已经经过的状态。访问React-Router以供引用。当你想访问该状态时,可以通过 this.props.location.state 来实现。

关于reactjs - React router v4 - 如何访问通过重定向传递的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46876888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com