Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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
Reactjs 调用ag grid react';s组件';来自cellrenderer组件的s方法_Reactjs_React Hooks_Ag Grid React_React Functional Component - Fatal编程技术网

Reactjs 调用ag grid react';s组件';来自cellrenderer组件的s方法

Reactjs 调用ag grid react';s组件';来自cellrenderer组件的s方法,reactjs,react-hooks,ag-grid-react,react-functional-component,Reactjs,React Hooks,Ag Grid React,React Functional Component,我有一个名为GenericGrid import React, { useState } from "react"; import { AgGridReact } from "ag-grid-react"; const GenericGrid = props => { const [visible, setVisible] = useState(false); const gridApi = useRef(); const onGridReady = params =&g

我有一个名为
GenericGrid

import React, { useState } from "react";
import { AgGridReact } from "ag-grid-react";

const GenericGrid = props => {
  const [visible, setVisible] = useState(false);

  const gridApi = useRef();

  const onGridReady = params => {
    const { defaultFilter } = props;
    gridApi.current = params.api;

    const datasource = getServerDataSource(
      gridApi.current,
      {
        size: AppConstants.PAGE_SIZE,
        url: baseUrl,
        defaultFilter
      }
    );

    gridApi.current.setServerSideDatasource(datasource);
  };  

  ...  // < == other methods omitted for brevity

  const onAddNew = () => setVisible(true);

  return (
   <>
    {!visible && (
      <div className="ag-theme-material gridSize">
        <AgGridReact
          reactNext={true}
          onCellValueChanged={onCellValueChanged}
          onGridReady={onGridReady}
          columnDefs={columnDefs}
          pagination={true}
          context={GenericGrid}  // <== passed the component in context
          onSelectionChanged={onRowSelect}
          {...props.options}
        ></AgGridReact>
      </div>
    )}
    {visible &&
      clonedElementWithMoreProps(addNewComponent, {
        visible,
        onHide: () => setVisible(false),
        dialogBtnLoading: createNewProgress,
        onSubmit: create
      })}
   </>
   );
}

export default GenericGrid;
现在,单击最后一列中的按钮,我想调用函数
onAddNew
,如果可能的话,甚至可以直接调用
setValue
,在
GenericGrid
组件中声明


根据官方文档,这适用于基于
的组件,其中上下文是这样传递的:
context={componentParent:this}
。但由于我的组件是功能组件,我直接在上下文中传递了
GenericGrid
,假设它可以工作,但它不能工作。

您是否检查cellRenderer而不是CellRenderFramework?也许是吧problem@mansourlotfi不,它不适用于cellRenderer。我在父级中声明了一个函数,然后将上下文设置为:const context={componentParent:(props)=>foo(props)};我在渲染器(未显示)中得到一个运行时错误,即foo不是函数。我正在调查这个链接:看看这是否解决了这个问题。它的关键是使用一个useRef钩子
if (field.name === "ViewDetails") {
  return {
    field: field.name,
    colId: field.name,
    headerName: field.displayName,
    sortable: false,
    cellRendererFramework: params => {

      console.log("params.context", params.context); // <== prints the definition of 'GenericGrid'
      console.log('params.context.onAddNew', params.context.onAddNew) // <== but this prints undefined

      return (
        <button className="btn btn-sm p-0 btn-link text-cm-primary"
          onClick={params.context.onAddNew}  
          >
          View Details
        </button>
      );
    }
  };
}