react-data-components 渲染组件(按钮),但无法访问在渲染方法之外定义的状态或函数

Posted

技术标签:

【中文标题】react-data-components 渲染组件(按钮),但无法访问在渲染方法之外定义的状态或函数【英文标题】:react-data-components renders component (a button) but can't access state or function defined outside the render method 【发布时间】:2018-09-09 01:07:21 【问题描述】:

我正在使用 react-data-components 来呈现表格。在表格内,我呈现了一个删除按钮。但是,在 render 方法中,它无法访问“this”关键字,因此无法访问按钮单击时的任何处理函数。我知道如何在父组件和子组件之间进行通信,但这似乎不属于该类别。代码编译但在运行时失败。错误是:未捕获的类型错误:无法读取未定义的属性“handleClick” 任何帮助表示赞赏。

这是我的代码:

接口 MyComponentProps 扩展 RouteComponentProps

appState: AppState;

@inject('appState')

class MyComponent 扩展 React.Component

constructor(props: MyComponentProps, context: object) 
    super(props, context);


renderLink(val: any, row: any) 
    console.log(this); //'this' is undefined
    return (
        <button onClick=this.handleClick>Delete</button>
    );


handleClick() 
    console.log('click');
    // access appState here


render() 
    var columns =
        [
             title: '', prop: 'Id', render: this.renderLink ,
             title: 'Name', prop: 'Name' 
        ];

    let data = [];
    // code to populate data

    return (<DataTable keys="fileId" columns=columns initialData=data />);

导出默认的MyComponent;

【问题讨论】:

【参考方案1】:

这里有 2 个选项。

1.- 调用handleClick作为箭头函数,绑定函数。

onClick=() => this.handleClick()

或 2.- 在构造函数中绑定函数:

constructor(props: MyComponentProps, context: object) 
    super(props, context);
    this.handleClick = this.handleClick.bind(this);

决定权在你,我使用第二个 when 是多次调用的函数,第一个 when 是一次性函数。

【讨论】:

您需要使用您想要访问上下文的所有功能进行绑定,所以我认为您也需要这样做:this.renderLink = this.renderLink.bind(this);

以上是关于react-data-components 渲染组件(按钮),但无法访问在渲染方法之外定义的状态或函数的主要内容,如果未能解决你的问题,请参考以下文章

提交后渲染列表时如何解决转换组的问题

reactive_forms Flutter - 创建和渲染组

是否可以为 ag-grid 中的树数据组提供组件作为单元格渲染器?

对象作为反应组件无效。 (找到:带有键 的对象)。如果您打算渲染一组孩子,请改用数组

错误:对象作为 React 子项无效(找到:带有键 的对象)。如果您打算渲染一组孩子,请改用数组

对象作为 React 子对象无效(找到:带有键 job 的对象)。如果您打算渲染一组孩子,请改用数组