admin管理员组文章数量:1022516
I have a fairly simple stateful ponent whose value I wish to toggle whenever someone clicks on a button:
class Layout extends Component {
state = {
sidedrawer: false
}
sideDrawerCloseHandler = () => {
this.setState({sidedrawer: false})
}
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
render () {
return (
<Aux>
<Toolbar sideDrawerTogglerHandler={this.sideDrawerTogglerHandler}/>
<SideDrawer SideDrawerOpen={this.state.sidedrawer} sideDrawerCloseHandler={this.sideDrawerCloseHandler} />
<main className={classes.co}>
{this.props.children}
</main>
</Aux>
)
}
}
export default Layout;
Now, when I run my react App it throws an error saying:
sidedrawer
is not defined in line 19
Can someone help me in fixing and understanding the error?
The line 18 - 19 happens to be this part in my code
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
I have a fairly simple stateful ponent whose value I wish to toggle whenever someone clicks on a button:
class Layout extends Component {
state = {
sidedrawer: false
}
sideDrawerCloseHandler = () => {
this.setState({sidedrawer: false})
}
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
render () {
return (
<Aux>
<Toolbar sideDrawerTogglerHandler={this.sideDrawerTogglerHandler}/>
<SideDrawer SideDrawerOpen={this.state.sidedrawer} sideDrawerCloseHandler={this.sideDrawerCloseHandler} />
<main className={classes.co}>
{this.props.children}
</main>
</Aux>
)
}
}
export default Layout;
Now, when I run my react App it throws an error saying:
sidedrawer
is not defined in line 19
Can someone help me in fixing and understanding the error?
The line 18 - 19 happens to be this part in my code
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
Share
Improve this question
edited Jun 13, 2018 at 19:11
Tholle
113k22 gold badges208 silver badges197 bronze badges
asked Jun 13, 2018 at 18:57
AlwaysblueAlwaysblue
12k44 gold badges141 silver badges253 bronze badges
2 Answers
Reset to default 5You have to get sidedrawer
from your state:
sideDrawerTogglerHandler = () => {
this.setState((previousState) => {
return {sidedrawer: !previousState.sidedrawer}
})
}
Side drawer isn't defined, what is defined is this.state.sidedrawer, what you are seeking is
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !this.state.sidedrawer})
}
But this isn't the best way to setState, as explained on React docs, the best way to update state based on the previous state is using setState with a function that receives the prevState as a prop, you can try this instead
sideDrawerTogglerHandler = () => {
this.setState((prevState) => ({
sidedrawer: !prevState.sidedrawer
}));
}
I have a fairly simple stateful ponent whose value I wish to toggle whenever someone clicks on a button:
class Layout extends Component {
state = {
sidedrawer: false
}
sideDrawerCloseHandler = () => {
this.setState({sidedrawer: false})
}
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
render () {
return (
<Aux>
<Toolbar sideDrawerTogglerHandler={this.sideDrawerTogglerHandler}/>
<SideDrawer SideDrawerOpen={this.state.sidedrawer} sideDrawerCloseHandler={this.sideDrawerCloseHandler} />
<main className={classes.co}>
{this.props.children}
</main>
</Aux>
)
}
}
export default Layout;
Now, when I run my react App it throws an error saying:
sidedrawer
is not defined in line 19
Can someone help me in fixing and understanding the error?
The line 18 - 19 happens to be this part in my code
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
I have a fairly simple stateful ponent whose value I wish to toggle whenever someone clicks on a button:
class Layout extends Component {
state = {
sidedrawer: false
}
sideDrawerCloseHandler = () => {
this.setState({sidedrawer: false})
}
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
render () {
return (
<Aux>
<Toolbar sideDrawerTogglerHandler={this.sideDrawerTogglerHandler}/>
<SideDrawer SideDrawerOpen={this.state.sidedrawer} sideDrawerCloseHandler={this.sideDrawerCloseHandler} />
<main className={classes.co}>
{this.props.children}
</main>
</Aux>
)
}
}
export default Layout;
Now, when I run my react App it throws an error saying:
sidedrawer
is not defined in line 19
Can someone help me in fixing and understanding the error?
The line 18 - 19 happens to be this part in my code
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !sidedrawer})
}
Share
Improve this question
edited Jun 13, 2018 at 19:11
Tholle
113k22 gold badges208 silver badges197 bronze badges
asked Jun 13, 2018 at 18:57
AlwaysblueAlwaysblue
12k44 gold badges141 silver badges253 bronze badges
2 Answers
Reset to default 5You have to get sidedrawer
from your state:
sideDrawerTogglerHandler = () => {
this.setState((previousState) => {
return {sidedrawer: !previousState.sidedrawer}
})
}
Side drawer isn't defined, what is defined is this.state.sidedrawer, what you are seeking is
sideDrawerTogglerHandler = () => {
this.setState({sidedrawer: !this.state.sidedrawer})
}
But this isn't the best way to setState, as explained on React docs, the best way to update state based on the previous state is using setState with a function that receives the prevState as a prop, you can try this instead
sideDrawerTogglerHandler = () => {
this.setState((prevState) => ({
sidedrawer: !prevState.sidedrawer
}));
}
本文标签: javascripttoggling boolean value in stateful componentStack Overflow
版权声明:本文标题:javascript - toggling boolean value in stateful component - Stack Overflow 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/questions/1745536232a2154973.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论