Javascript 将变量传递给setState

Javascript 将变量传递给setState,javascript,reactjs,setstate,Javascript,Reactjs,Setstate,我是新来的。在我的程序中,用户被要求点击一个按钮,然后根据该按钮,状态被改变 这是渲染部分: <button onClick={this.togglePage(2)}>Click Here</button> 我在这里传递值的方式正确吗?我收到一个错误,说“超过了最大更新深度”您需要传递一个函数,而不是立即调用它 <button onClick={() => this.togglePage(2)}>Click Here</button>

我是新来的。在我的程序中,用户被要求点击一个按钮,然后根据该按钮,状态被改变

这是渲染部分:

<button onClick={this.togglePage(2)}>Click Here</button>

我在这里传递值的方式正确吗?我收到一个错误,说“超过了最大更新深度”

您需要传递一个函数,而不是立即调用它

 <button onClick={() => this.togglePage(2)}>Click Here</button>
this.togglePage(2)}>单击此处

正如当前编写的那样,您在render中调用
togglePage
,这会导致状态更新和重新render破坏调用堆栈。

您需要传递一个函数,而不是立即调用它

 <button onClick={() => this.togglePage(2)}>Click Here</button>
this.togglePage(2)}>单击此处

正如当前编写的那样,您在render中调用了
togglePage
,这会导致状态更新和重新渲染,从而破坏调用堆栈。

哦,我明白了。即使我没有传递值,这也会发生吗?类似于just-toggle(true/false)函数的情况?@DarkProfessor如果您调用该函数而不是将其作为回调传递,则是
onClick={fn}
-ok
onClick={fn()}
-notok,除非
fn
返回一个新函数:)如果在
render
中使用箭头函数,这将变得多余。如果需要使用不同的值创建多个
togglePage
回调,可以通过创建
makePageToggler(currentpage){return()=>this.setState({currentpage})}
和调用
onClick={this.makePageToggler(2)}
来重写代码,但不需要。正如函数名
bind()
所示,该语句用于将上下文
this
的名称
togglePage
绑定到您实现的函数
togglePage
。不过,您可以这样编写该函数:
togglePage=(page)=>{…}
,并且您不需要任何绑定注意,在
makePageToggler
的情况下,可以进行调用,因为它返回一个新函数。哦,我明白了。即使我没有传递值,这也会发生吗?类似于just-toggle(true/false)函数的情况?@DarkProfessor如果您调用该函数而不是将其作为回调传递,则是
onClick={fn}
-ok
onClick={fn()}
-notok,除非
fn
返回一个新函数:)如果在
render
中使用箭头函数,这将变得多余。如果需要使用不同的值创建多个
togglePage
回调,可以通过创建
makePageToggler(currentpage){return()=>this.setState({currentpage})}
和调用
onClick={this.makePageToggler(2)}
来重写代码,但不需要。正如函数名
bind()
所示,该语句用于将上下文
this
的名称
togglePage
绑定到您实现的函数
togglePage
。尽管如此,您可以这样编写该函数:
togglePage=(page)=>{…}
,并且您不需要任何绑定注意,在
makePageToggler
的情况下,可以进行调用,因为它返回一个新函数。