Javascript 正在更新在渲染方法内调用的函数的状态值

Javascript 正在更新在渲染方法内调用的函数的状态值,javascript,reactjs,setstate,Javascript,Reactjs,Setstate,我正在呈现一个函数,该函数在我的react应用程序中返回一个组件,如下所示 render(){ return( <div> {this.renderView()} <div> ) } renderView() { return( <HelloPage pages={this.state.pageCount} showEndPage={true} renderResult

我正在呈现一个函数,该函数在我的react应用程序中返回一个组件,如下所示

render(){
  return(
    <div>
      {this.renderView()}
    <div>
  )
}
 renderView() {
   return(
     <HelloPage
       pages={this.state.pageCount}
       showEndPage={true}
       renderResultStats={
         function (stats) {
           if (stats.numberOfPages < 5) {
             this.setState({
               pageCount: stats.numberOfPages
             })
           } else {
             this.setState({
               pageCount: 5
             })
           }
          }.bind(this)
        }
      />
   )
 }
render(){
返回(
{this.renderView()}
)
}
我的渲染视图如下所示

render(){
  return(
    <div>
      {this.renderView()}
    <div>
  )
}
 renderView() {
   return(
     <HelloPage
       pages={this.state.pageCount}
       showEndPage={true}
       renderResultStats={
         function (stats) {
           if (stats.numberOfPages < 5) {
             this.setState({
               pageCount: stats.numberOfPages
             })
           } else {
             this.setState({
               pageCount: 5
             })
           }
          }.bind(this)
        }
      />
   )
 }
renderView(){
返回(
)
}
我可以让代码正常工作,但我得到一个控制台错误,如下所示:

无法在现有状态转换期间更新(例如在
渲染
)。渲染方法应该是道具和工具的纯功能 国家


我本应该使用变量而不是
setState
,但我无法将更新后的
pageCount
值传递给
pages
属性,因为它只返回默认值。为了解决这个问题,我使用了
setState

您不能直接在render函数中更新状态

选项1

componentDidMount(){
    this.setState(state=>({pageNo:5}))
}
选项2

render(){
  return(
    <HelloPage
                pages={this.state.pageCount}
                showEndPage={true}
                renderResultStats={()=>{this.setState(state=>({pageNo:5}))}}
     />
  );
}
render(){
返回(
{this.setState(state=>({pageNo:5}))}
/>
);
}

此函数不会自动调用。您可以使用任何事件方法,如
onClick

我建议移动内联函数renderResultStats并将其作为类中的一个方法,this.setState inside render方法(或在其内部调用的任何render方法)将始终给出此错误
pageCount
是否在
HelloPage组件
中使用?你能分享一下HelloPage的代码吗?是的。还有一个类似于
HelloPage组件的组件
,并且
pageCount
也在其中使用。如何使用componentDidMount来设置您在reder方法中尝试执行的操作?您在哪里调用
renderResultStats
?从它的名称来看,它似乎是在
HelloPage
render
函数中调用的。除了使用箭头函数而不是普通函数外,您的代码与OP的代码有什么不同?