Javascript 将自定义道具添加到组件实例(不是通过父级)-反应数据网格
只是为了提供更广泛的背景- 我的最终目标是,如果与后端同步,则使用“synced”图标增强可编辑单元格 我继续尝试向特定的可编辑单元格添加自定义道具,以指示Javascript 将自定义道具添加到组件实例(不是通过父级)-反应数据网格,javascript,reactjs,react-data-grid,Javascript,Reactjs,React Data Grid,只是为了提供更广泛的背景- 我的最终目标是,如果与后端同步,则使用“synced”图标增强可编辑单元格 我继续尝试向特定的可编辑单元格添加自定义道具,以指示syncedWithBackEnd=true/false,然后使用自定义格式化程序有条件地添加样式(如果与DB道具同步为true) 问题是,我无法将此自定义道具传递到单元格实例 目前已尝试: 提供对格式化程序的回调并从外部调用它。找不到在格式化程序实例(附加到特定单元格)上调用函数的方法 将道具设置为handleRowUpdated逻辑的一部
syncedWithBackEnd=true/false
,然后使用自定义格式化程序有条件地添加样式(如果与DB道具同步为true)
问题是,我无法将此自定义道具传递到单元格实例 目前已尝试:
handleRowUpdated
逻辑的一部分。设置自定义道具,但未到达单元格:
var rows=this.getRows();
...
//e.updated.customProp=“whatever”-->无法到达单元格
分配(行[e.rowIdx],e.updated);
this.setState({rows:rows})代码>
关于如何实现这一点有什么想法吗
或者可能有一些明显的方法来达到我完全错过的最终目标(必须提到的是,我是一个新的反应者,对js一般来说都很陌生) 当实际同步发生时(在想要更新自定义单元格之前),我假设它是通过回调完成的?如果是这样,那么执行远程ajax调用以更新值的回调就可以更新this.state.rows.customProp(this.state.rows.whatever.customProp),并且一旦状态发生更改,并且假设getRows()是从this.state.rows获取的,那么这一切都将自动发生。更糟糕的情况是,在更改状态值后,可能必须添加对此.forceupdate()的调用。这是基于我的一些类似的声音和作品
//column data inside constructor (could be a const outside component as well)
this.columnData = [
{
key: whatever,
name: whatever,
...
formatter: (props)=>(<div className={props.dependentValues.isSynced? "green-bg" : "")} onClick={(evt)=>this.clickedToggleButton} >{props.value}</div>),
getRowMetaData: (data)=>(data),
},
...
}
]
不确定这是否有帮助,但可能会帮助您开始
//when a span
clickedToggleButton(evt, props){
//do remote ajax call we have an ajax wrapper util we created so pseudo code...
MyUtil.call(url, params, callback: (response)=>{
if(this.response.success){
let rows = this.state.rows;
let isFound = false;
for(let obj of rows){
if(obj.id==props.changedId){
obj.isSynced = true;
isFound = true;
break;
}
}
//not sure if this is needed or not...
if(isFound){ this.forceUpdate(); }
}
}
}