我正在 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)
我看到状态正在正确变化,但没有看到按钮有任何变化。为什么?
您的代码似乎不完整,无法检查您的情况。首先想到的是表达式被计算一次(也许,因为它显示为不直接在渲染函数中的对象的方法)并且永远不会被重新触发。
另请注意,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
| 归档时间: |
|
| 查看次数: |
7557 次 |
| 最近记录: |