javascript - 如何在 render() 中的 JSX 组件树中定义的组件上调用 React forceUpdate()
问题描述
我有带有原理图代码的 React 组件:
class OrderList extends Component {
constructor() {
super();
this.handleUpdate = this.handleUpdate.bind(this);
}
handleChange(event) {
//>>POI how to get reference to the Grid, that is defined in the component tree?
//grid.forceUpdate();
}
render() {
return (
<div>
<Grid data={this.props.orders}>
<button onClick={this.handleUpdate}>Update</button>
</div>
);
}
}
<Grid>
是一些复杂的 React 组件,例如https://devexpress.github.io/devextreme-reactive/react/grid/或https://www.ag-grid.com/react-getting-started/,它的外观取决于某些状态多变的。<Grid>
如果更新,则自动重新渲染(例如,更新其最终的、计算的(通过 React)样式)this.props.orders
。但是我有this.state.selectedOrderNo
不属于的变量this.props.orders
(当然,这些是 2 个不同的变量 - 道具数组和状态标量),并且 Grid 有一些样式规则取决于this.state.selectedOrderNo
但这些样式规则仅在重新渲染时计算/<Grid>
渲染(但是这种重新渲染不会在this.state.selectedOrderNo
更改时发生,因为这些样式规则是比直接参数更深的选项<Grid>
) 但我想在this.state.selectedOrderNo
更改时启动网格的重新渲染。所以,这就是我试图打电话的原因grid.forceUpdate()
。但问题是 -我怎样才能得到grid
参考<Grid component>
?
解决方案
您需要ref
在 Grid 中使用才能使其工作
class OrderList extends Component {
constructor() {
super();
this.handleUpdate = this.handleUpdate.bind(this);
}
handleChange(event) {
//>>POI how to get reference to the Grid, that is defined in the component tree?
//grid.forceUpdate();
this.grid.forceUpdate();
}
render() {
return (
<div>
<Grid ref={ref=>this.grid=ref} data={this.props.orders}>
<button onClick={this.handleUpdate}>Update</button>
</div>
);
}
}
希望能帮助到你
推荐阅读
- php - 在php中将列转置为行
- python - 类型错误:+= 不支持的操作数类型:“int”和“str”
- json - 如何将json数组作为字符串从邮递员传递给web api
- javascript - 用php创建remmember me cookie
- video - FFmpeg 将视频解码为无损帧硬件加速 CUDA
- python-3.x - 如何使用 csv 文件或文本文件(不使用 pandas)将网络抓取的数据转换为表格格式
- javascript - 顶级等待在 Node JS 14.15.3 中不起作用
- powershell - Powershell - 邮件消息正文不会换行
- xml - 如何在 HSQLDB 表列中以字符串形式保存 XML 数据
- kubernetes - 我们如何在 AKS 或 Openshift 中使用 Fluentd