【发布时间】:2018-01-13 23:54:25
【问题描述】:
用户登录后,我想在标题中显示名称。我一直在阅读有关如何传递道具的信息,但我看到的是,当您从另一个组件访问另一个组件状态时,您再次呈现其他组件的洞察力。如何在不渲染另一个组件的情况下访问另一个状态?在这里,我不想让 Header Component 洞察我的 Login 组件并想知道
- 这里我重定向,所以我可以传入状态(但由于我重定向到'/',它是主组件而不是标题组件,我仍然不知道如何在组件标题中访问它。
-
如果我不使用重定向,我如何将它传递给另一个?
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('/');
}
}
【问题讨论】:
-
不可能。为了让数据登录,您还必须在页面上呈现标题。除非你使用flux、redux之类的东西来拥有一个大的可共享状态。
-
你应该使用像 redux、flux 这样的状态管理器。
标签: javascript reactjs setstate