何时以及何时不使用JSX事件处理程序函数参考中的“ this”?

时间:2018-12-11 06:20:48

标签: reactjs event-handling this

我正在尝试做this ReactJS Tagging tutorial

我快到一半了,我的代码是on Codepen here。 (我将把这支笔保持原样,并且不会对其进行进一步的更改。)

如您所见,在代码的某一点上,我在JSX中的事件处理程序如下所示:

onKeyUp={this.onKeyUp}

在另一点,它看起来像这样:

onClick={onDeleteTag}

我的问题是:为什么在第一种情况下需要this.而在第二种情况下不需要?

1 个答案:

答案 0 :(得分:1)

如果您要引用超出当前函数范围的函数/值(在您的情况下为this,但仍封装在对象或类中,则必须使用

render()

const foo = () => 'foo';

class Clazz {

    otherFunc() {
        return 'otherFunc';
    }

    render() {
        const bar = () => 'bar';

        bar() // can call directly

        this.otherFunc() // necessary as it's a "sibling" function

        foo(); // not necessary as it's a global function in this module's scope
    }
}