Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将自定义道具添加到组件实例(不是通过父级)-反应数据网格_Javascript_Reactjs_React Data Grid - Fatal编程技术网

Javascript 将自定义道具添加到组件实例(不是通过父级)-反应数据网格

Javascript 将自定义道具添加到组件实例(不是通过父级)-反应数据网格,javascript,reactjs,react-data-grid,Javascript,Reactjs,React Data Grid,只是为了提供更广泛的背景- 我的最终目标是,如果与后端同步,则使用“synced”图标增强可编辑单元格 我继续尝试向特定的可编辑单元格添加自定义道具,以指示syncedWithBackEnd=true/false,然后使用自定义格式化程序有条件地添加样式(如果与DB道具同步为true) 问题是,我无法将此自定义道具传递到单元格实例 目前已尝试: 提供对格式化程序的回调并从外部调用它。找不到在格式化程序实例(附加到特定单元格)上调用函数的方法 将道具设置为handleRowUpdated逻辑的一部

只是为了提供更广泛的背景- 我的最终目标是,如果与后端同步,则使用“synced”图标增强可编辑单元格

我继续尝试向特定的可编辑单元格添加自定义道具,以指示
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(); }
             }
           } 
        }