如何渲染组件取决于角色
How to render component depends role
所以我有一个特定的代码。
问题是它暂时不起作用——当它应该起作用的时候。
我需要刷新页面才能正常工作。
如果来自 LocalStorage 的用户为空,则应该呈现
如果来自 LocalStorage 的用户存在,则不应呈现
它可以工作,但我怎样才能改进它以在登录后(而不是在刷新页面后)工作?
我应该使用其他反应生命周期方法吗?
class Navbar extends React.Component {
constructor(props){
super(props)
this.state ={
user: null
}
}
componentDidMount(){
const user = JSON.parse(localStorage.getItem('user'));
this.setState({
user: user
},
console.log('test'+ this.state.user)
)
}
render(){
return(
<div>
{ !this.state.user ?
<div className ="navbar">
<Logo/>
<Menu/>
<PanelOptions/>
</div>
: null}
</div>
);
}
}
Should I use other react lifecycle method?
不,这没有用。未观察到本地存储更改,不能成为重新渲染的原因。
将用户数据存储在本地存储的原因是什么?组件之间共享数据不应该是[主要]。
组件在道具或状态变化时重新渲染。您可以从父状态(可能处理登录过程)传递一些值(f.e。isLogged
或简单地 user
)。如果登录是在您需要的兄弟姐妹中处理的 lifting state up - 基本反应技术之一。
看组件好像是功能组件
并且可以从呈现 NavBar 组件的父组件将用户作为 prop 发送。
export default NavBar = (props) => {
if(!props.user)
{
return (
<div className ="navbar">
<Logo/>
<Menu/>
<PanelOptions/>
</div>
)
}
else
{
return null
}
}
所以我有一个特定的代码。 问题是它暂时不起作用——当它应该起作用的时候。 我需要刷新页面才能正常工作。
如果来自 LocalStorage 的用户为空,则应该呈现 如果来自 LocalStorage 的用户存在,则不应呈现
它可以工作,但我怎样才能改进它以在登录后(而不是在刷新页面后)工作?
我应该使用其他反应生命周期方法吗?
class Navbar extends React.Component {
constructor(props){
super(props)
this.state ={
user: null
}
}
componentDidMount(){
const user = JSON.parse(localStorage.getItem('user'));
this.setState({
user: user
},
console.log('test'+ this.state.user)
)
}
render(){
return(
<div>
{ !this.state.user ?
<div className ="navbar">
<Logo/>
<Menu/>
<PanelOptions/>
</div>
: null}
</div>
);
}
}
Should I use other react lifecycle method?
不,这没有用。未观察到本地存储更改,不能成为重新渲染的原因。
将用户数据存储在本地存储的原因是什么?组件之间共享数据不应该是[主要]。
组件在道具或状态变化时重新渲染。您可以从父状态(可能处理登录过程)传递一些值(f.e。isLogged
或简单地 user
)。如果登录是在您需要的兄弟姐妹中处理的 lifting state up - 基本反应技术之一。
看组件好像是功能组件
并且可以从呈现 NavBar 组件的父组件将用户作为 prop 发送。
export default NavBar = (props) => {
if(!props.user)
{
return (
<div className ="navbar">
<Logo/>
<Menu/>
<PanelOptions/>
</div>
)
}
else
{
return null
}
}