用户登录后,我想在标题中显示名称。我一直在阅读有关如何传递道具的内容,但我看到的是当你从另一个组件访问另一个组件状态时,你再次提醒其他组件。如何在不渲染其他组件的情况下访问另一个状态?在这里,我不想呈现Header Component洞察我的登录组件并且想知道
如果我没有使用重定向,我该如何将其传递给另一个?
class Header extends React.Component {
render () {
return (
<header>
<nav>
<p className="menuButton"><Link to='/'>Home</Link></p>
<p className="menuButton"><Link to='/login'>Login</Link></p>
</nav>
</header>
)
}
}
登录组件:
class Login extends React.Component {
constructor(props) {
super(props)
this.state = {
username:'',
email: '',
password: ''
}
this.loginFunc = this.loginFunc.bind(this)
}
loginFunc(){
... getting user data ...
this.setState({
username:response.firstname
})
...
history.push('/', { username: response.firstname });
history.go('/');
}
}
答案 0 :(得分:2)
您可以拥有一个父React组件,您可以在其中跟踪状态 对于Header和Login组件并通过props传递状态,或您可以使用状态管理库,例如Flux,Redux或MobX或实现您自己的PubSub机制。你根本无法访问其他组件&#39;不使用vanilla React中的父组件的状态,因为React使用单向数据流。
我建议您查看状态管理库,但如果您坚持使用选项1,则可以执行以下操作: