ag-grid React cellRendererFramework 在状态更改时不会重新渲染

Met*_*enç 5 reactjs ag-grid

我正在 ag-grid-react 中显示数据,并且网格已经根据状态进行了条件单元格渲染。这是我的代码。这在第一次运行时有效并显示“YEAH”按钮。当我点击按钮时我想用 NOOO 按钮进行更改

这是状态

this.changebutton = this.changebutton.bind(this);
this.state= {
   isyes = "yes"
}
Run Code Online (Sandbox Code Playgroud)

这是 ag-grid-cell-renderer

cellRendererFramework: (params) => {
  return <div>
   {
     this.state.isyes === "yes" ? 
<button onClick= {() => this.changebutton()}>YEAH</button> 
: 
<button onClick= {() => this.changebutton()}>NOOOO</button>
 }

</div>

}
Run Code Online (Sandbox Code Playgroud)

这是状态改变者

changebutton() {
     this.setState({isyes: "no" })
      console.log(this.state.isyes)
}
Run Code Online (Sandbox Code Playgroud)

我看到状态正在正确变化,但没有看到按钮有任何变化。为什么?

Mos*_*ini 2

您的代码似乎不完整,无法检查您的情况。首先想到的是表达式被计算一次(也许,因为它显示为不直接在渲染函数中的对象的方法)并且永远不会被重新触发。

另请注意,setState()因此async不应该

this.setState({isyes: "no" });
console.log(this.state.isyes);
Run Code Online (Sandbox Code Playgroud)

相反,你应该

this.setState(
    {isyes: "no" },
    () => console.log(this.state.isyes);
);
Run Code Online (Sandbox Code Playgroud)

尝试使用:

api.refreshCells() 
Run Code Online (Sandbox Code Playgroud)

参考:ag-grid.com/javascript-grid-cell-rendering-components