当前位置: 首页 > 面试题库 >

React Native this2.'function'不是函数

盖锐进
2023-03-14
问题内容

我的React Native组件有问题。

sayHi = (s) => {
    console.log('hey' + s)
}

renderListItem(item, i) {

    return (
        <TouchableOpacity
            key={i}
            style={styles.listItem}
            onPress={() => { this.sayHi('bob') }}>

        <Text>{item}</Text>
        </TouchableOpacity>
    )
}

render() {
    this.sayHi('patrick')

    const { list } = this.props

    return (
        <View>
        {list.map(this.renderListItem)}
        </View>
    )
}

renderListItem我得到一个错误 _this2.sayHi不是一个函数

在线搜索,但大多数帖子都不适合我的情况;我看了一下这篇文章但是我已经有了一个箭头功能,所以这不是上下文问题。

功能控制台可以在中正常记录日志render()。我试图this在构造函数中绑定,但仍然收到错误。


问题答案:

Array#map在不同的上下文中执行回调,因此this未正确绑定。根据文档:

句法

var new_array = arr.map(callback[, thisArg])

参量

[…]

thisArg

可选的。this执行回调时用作的值。

[…]

如果thisArg提供了参数map,它将用作回调的this值。否则,该值undefined将用作其this值。

您可以将thiscontext作为第二个参数传递给Array#map

{list.map(this.renderListItem, this)}

或者,Function#bind直接使用:

{list.map(this.renderListItem.bind(this))}

最后,您可以使用箭头功能:

{list.map((item, i) => this.renderListItem(item, i))}

虽然我会亲自选择第一个选项。



 类似资料:
  • 问题内容: 我正在尝试使用nodejs和socket.io 连接到我的 mongodb 。我能够连接到数据库,因为一旦我-确实- 获得了我在控制台中但在Node.js端上的“连接接受” 通过猫鼬建立与mongodb:// localhost:27017的连接 接下来它立即失败 process.nextTick(function(){throw err;})^ TypeError:undefined

  • 函数是 Go 里面的基本代码块:Go 函数的功能非常强大,以至于被认为拥有函数式编程语言的多种特性。在这一章,我们将对 第 4.2.2 节 所简要描述的函数进行详细的讲解。

  • 函数类型1即是函数这种特殊的类型。 可以将一个函数赋值给一个变量,一个函数类型的变量。 还可以将一个函数作为参数进行传递。 也可以在函数调用中返回一个函数。 函数类型有两类;可分为internal和external函数。 内部函数(internal) 因为不能在当前合约的上下文环境以外的地方执行,内部函数只能在当前合约内被使用。如在当前的代码块内,包括内部库函数,和继承的函数中。 外部函数(Ext

  • 本节介绍 TypeScript 的函数,函数是任何应用程序的基本构建部分,通过函数返回一个计算后的值。 TypeScript 的函数声明中函数类型是极为重要的,函数的参数都需要标注参数类型,这可以帮助编译器进行正确的类型推导。本节还会着重讲解 this 的使用,可以通过编译选项和 this 参数两种方法,正确理解 this 的指向。 1. 慕课解释 在 JavaScript 中,函数是头等(fir

  • 本文向大家介绍JavaScript中的Function函数,包括了JavaScript中的Function函数的使用技巧和注意事项,需要的朋友参考一下 首先给大家介绍JavaScript中function定义函数的几种方法: 1.最基本的作为一个本本分分的函数声明使用。 或 2.作为一个类构造器使用: 3.作为闭包使用: 4.可以作为选择器使用: 5.以上四中情况的混合应用: JavaScript

  • 以下是MathML中可用的函数符号列表。 MathML符号 HTML实体 Hex代码 描述 ⋅ &sdot; ⋅ 指定点积 ⨯ &cross; ⨯ 指定交叉产品 ‖ &vert; ‖ 指定范数(幅度)条 ⟨ &lang; ⟨ 指定左尖括号 ⟩ &rang; ⟩ 指定直角括号 ∘ &compfn; ∘ 指定功能组成 → &rarr; → 指定一般函数映射 ↦ &mapsto; ↦ 指定具体的函数映射