在 React Native 中将函数作为 prop 传递时如何绑定(this)

2024-03-16

我正在开发一个简单的计算器应用程序来学习本机反应。我有一个显示数字按钮的按钮组件。我需要向它传递一个函数,以便当触摸按钮时,父级的状态会更新为新数字。 如果没有bind(this),则表示this.setState未定义。当我在构造函数中添加绑定(this)时,我得到的只是应用程序中的空白页面。我的代码如下所示。

构造函数:

constructor() {
    super();
    this.state = {
      total: 0,
      display: 0
    };
    this._displayUpdate = this._displayUpdate.bind(this);
  }

一排计算器按钮:

<View style={styles.buttonRow}>
          <NumButton numText={7} update={this._displayUpdate} />
          <NumButton numText={8} update={this._displayUpdate} />
          <NumButton numText={9} update={this._displayUpdate} />
          <FuncButton funcText={'*'} />
        </View>

数字按钮组件:

export default class NumButton extends Component {
    render() {
        return (
            <TouchableHighlight style={styles.buttonArea} onPress={this.props.update(this.props.numText)}>
                <Text style={styles.buttonText}>{this.props.numText}</Text>
            </TouchableHighlight>
        )
    }
}

你的父母bind是对的。问题在于onPress of the TouchableHighlight in the NumButton成分。您不能向其添加要执行的代码,您应该向其传递一个函数。您可以使用 ES6 箭头函数:

export default class NumButton extends Component {
render() {
    return (
        <TouchableHighlight style={styles.buttonArea} 
            onPress={()=>{ this.props.update(this.props.numText) }}
        >
            <Text style={styles.buttonText}>{this.props.numText}</Text>
        </TouchableHighlight>
    )
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 React Native 中将函数作为 prop 传递时如何绑定(this) 的相关文章

随机推荐

  • 如何在 vi/Vim 中的多行选择的开头插入文本

    In Vim http en wikipedia org wiki Vim 28text editor 29 如何在所选内容的每行开头插入字符 例如 我想通过前置来注释掉一段代码 在每一行的开头假设我的语言的注释系统不允许像这样的块注释 我
  • 如何统一改变任何对象的颜色?

    我想为创建的每个对象统一更改 C 中每个实例的颜色 我不希望使用相同预制件创建的前一个对象也仅更改其颜色 请帮忙 假设您实例化一个游戏对象 您可以通过简单地访问渲染和材质来分配 更改 颜色 gameObject GetComponent
  • 使用 jQuery 向左/向右滑动 div

    我在多个地方找到了以下代码来向左 向右滑动 hello hide slide direction left 1000 但是 我无法让它工作 这是我正在尝试的简约测试
  • 从组合中选择值时,在 Access 子表单数据表中突出显示该记录

    我有一个带有组合框和子表单的访问表单 子表单处于数据表模式 我想要的方式 我想做的是做一种搜索功能 当从组合框中选择某些内容时 我希望子窗体的数据表滚动到并突出显示匹配的记录 我不想过滤子表单 即删除所有不匹配的记录 谁能给我一些关于如何实
  • Laravel Mix Uncaught ReferenceError:$未定义

    我搜索了又搜索 但找不到我的问题的答案 这是我的问题 我正在尝试使用 Laravel Mix 全局加载 jQuery 我尝试修改各种文件 但似乎没有任何效果 我仍然收到 未定义 错误 这是我的代码 Bootstrap js window r
  • 如何以编程方式向下滑动 UITableView 以显示底层 UIRefreshControl

    当我以编程方式更新表时 如何显示 UIRefreshControl 使用 self refreshControl beginRefreshing 使微调器具有动画效果 但不会显示它 您必须手动更改contentOffset你的UITable
  • Tomcat 和 CATALINA_HOME

    我正在搞乱 Tomcat 服务器 我认为发生了一些奇怪的事情 我从 apache 网站下载了 Tomcat 7 不是 RPM 而是 tar gz 据我了解 应该设置 CATALINA HOME 和 CATALINA BASE 环境变量 但是
  • OS X 上的 Haskell 音频输出?

    我希望能够从 Haskell 输出音频 我目前在 OS X Snow Leopard 上使用 GHC 6 10 我尝试过构建 jack 库 使用 JackOSX 和 PortAudio 库 但它们似乎都没有效果 有没有一种相对简单的方法可以
  • “放置”是否会覆盖现有值?

    哈希表新手 有一个简单的问题 由于某种原因 谷歌搜索没有给我一个直接的答案 假设我有一个
  • Firefox 控制台中的对象“不可用”

    我有几个divclass class name 并且还宣布 var A document getElementsByClassName class name console log A 0 Chrome 控制台显示 div class cl
  • Android 中新 Activity 的 ProgressDialog

    当用户点击菜单项时 我需要创建一个新的活动 此活动加载大量数据 然后显示地图 并需要几秒钟的时间才能显示 如何从一个活动到另一个活动使用 ProgressDialog 如果我打电话的话我实际上看不到它 ProgressDialog dial
  • 从不同操作系统检索到的故障转储指向消息循环。如何从那里到达故障位置? (TeamViewer 使我的进程崩溃。)

    我们软件的一位客户抱怨说 该软件在他的 Windows XP 计算机上崩溃了 我让他下载ProcDump https technet microsoft com en us sysinternals dd996900 aspx并按如下方式运
  • 带有自定义列表的 AutoCompleteTextView:如何设置 OnItemClickListener

    我正在开发一个使用标签的应用程序 访问这些内容应该尽可能简单 使用 AutoCompleteTextView 似乎适合我 我想要的是 现有标签应显示在可选择列表中 每个项目一侧都有一个复选框 现有标签应在 AutoCompleteTextV
  • 如何并行而不是顺序执行多个查询?

    我正在查询所有 10 个表以从中获取用户 ID 并将所有用户 ID 加载到 HashSet 中 以便我可以拥有唯一的用户 ID 目前来看是依次进行的 我们转到一个表并从中提取所有 user id 并将其加载到哈希集中 然后加载到第二个和第三
  • 用于有条件签出或从 SVN 更新的 Maven 设置?

    我在 POM 文件中有以下设置 但是我的构建脚本失败 并显示 SVN 文件已锁定 消息 是否有其他方法可以进行条件签出 如果项目已经签出 那么我只想更新 否则如果项目未签出它应该检查代码并且不应该更新它 提前致谢
  • 将 datagridview 导出到 csv 文件

    我正在开发一个应用程序 该应用程序会将名为scannerDataGridView 的DataGridView 导出到csv 文件 找到了一些示例代码来执行此操作 但无法使其工作 顺便说一句 我的数据网格没有数据绑定到源 当我尝试使用 Str
  • 如何使用 Kendo UI 查询本地 websql 数据库

    如果这个问题对于SO来说太宽泛 请原谅我 但我正在努力寻找我需要的任何示例 并认为有人可能能够为我指明正确的方向 我刚刚开始使用 Kendo UI mobile 并试图找到一个教程或任何示例代码 用于在 kendo ui mobile 中创
  • async/await 方法是否与调用者在同一线程中运行?

    I have read that async await methods runs in the same thread as caller and I saw it in a WPF application but while testi
  • 如何在我的 C++ 应用程序中编译 sqlite3?

    解决方案 我刚刚添加 lpthread ldl标记到我的 makefile 并且它有效 不知道为什么 但我很幸运能够避免在尝试时手动编译 sqlite3 嗯 无论如何 有些答案非常好 谢谢大家 去给你们喝杯茶吧 三个月前我能够找到如何做到这
  • 在 React Native 中将函数作为 prop 传递时如何绑定(this)

    我正在开发一个简单的计算器应用程序来学习本机反应 我有一个显示数字按钮的按钮组件 我需要向它传递一个函数 以便当触摸按钮时 父级的状态会更新为新数字 如果没有bind this 则表示this setState未定义 当我在构造函数中添加绑