“未定义不是对象” this.state 未绑定

2024-03-25

我的反应本机组件,我通过创建React.createClass,似乎没有约束力this关键字正确,导致我无法访问this.state。这是我得到的错误:

代码如下。我没有看到与网站上的示例有任何本质上的不同,所以我无法弄清楚我做错了什么。我怎样才能解决这个问题?

'use strict';

var React = require('react-native');

var Main = React.createClass({
  getInitialState: () => {
    return { username: '', isloading: false, iserror: false };
  },
  handleChange: (event) => {
    this.setState({
      username: event.nativeEvent.text
    });
  },
  handleSubmit: (event) => {
    this.setState({
      isloading: true
    });
    console.log('Submitting... ' + this.state.username);
  },
  render: () => {
    return (
      <View style={styles.mainContainer}>
        <Text> Search for a Github User</Text>
        <TextInput style={styles.searchInput}
                   value={this.state.username}
                   onChange={this.handleChange.bind(this)} /> 
        <TouchableHighlight style={styles.button}
                            underlayColor='white'
                            onPress={this.handleSubmit.bind(this)} /> 
        <Text style={styles.buttonText}> SEARCH</Text>
      </View>
    );
  }
});

var { Text, View, StyleSheet, TextInput, TouchableHighlight, ActivityIndicatorIOS } = React;

var styles = StyleSheet.create({
  mainContainer: {
    flex: 1,
    padding: 30,
    marginTop: 65,
    flexDirection: 'column',
    justifyContent: 'center',
    backgroundColor: '#48BBEC'
  },
  title: {
    marginBottom: 20,
    fontSize: 25,
    textAlign: 'center',
    color: '#fff'
  },
  searchInput: {
    height: 50,
    padding: 4,
    marginRight: 5,
    fontSize: 23,
    borderWidth: 1,
    borderColor: 'white',
    borderRadius: 8,
    color: 'white'
  },
  buttonText: {
    fontSize: 18,
    color: '#111',
    alignSelf: 'center'
  },
  button: {
    height: 45,
    flexDirection: 'row',
    backgroundColor: 'white',
    borderColor: 'white',
    borderWidth: 1,
    borderRadius: 8,
    marginBottom: 10,
    marginTop: 10,
    alignSelf: 'stretch',
    justifyContent: 'center'
  },
});

module.exports = Main

问题是在中使用了 ES6 fat arrowrender: () => {这将导致 React 提供的自动绑定功能.createClass功能无法正常工作。

只需将其更改为render: function() {..如果您不想将代码转换为 ES6 类,应该可以解决问题。

如果你确实将其转换为 ES6 类,请查看this https://facebook.github.io/react/docs/reusable-components.html#no-autobinding

方法遵循与常规 ES6 类相同的语义,这意味着 他们不会自动将 this 绑定到实例。你必须 显式使用 .bind(this) 或箭头函数 =>。

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

“未定义不是对象” this.state 未绑定 的相关文章

随机推荐

  • 元素在故事板文件中出现和消失

    这不是一个大问题 但很烦人 每次我在 Interface Builder 中编辑故事板并且想要将其签入修订控制系统时 都会生成或删除一个元素 如果存在 则将其删除 反之亦然 它给我的签到增加了不必要的噪音 有人知道发生了什么以及如何解决它吗
  • 获取点击的div的id

    我想选择id当我在 jQuery 中单击当前 div 时 例如 假设我有这样的 HTML div class item hello world div div class item 10 hello people div 当我点击第一个 d
  • 如何从IDEA+Gradle调试AppEngine本地服务器?

    我正在学习 Udacity App Engine 课程 但作为修补者 我正在使用 Gradle 和 IDEA 开源版本 我已经使用以下 build gradle 文件成功设置了项目 buildscript repositories mave
  • IntelliJ Idea 和 JNI:确保 DLL 位于需要执行的位置

    我正在项目中使用第三方库 它包括两个 dll 文件和一个 jar 文件以提供 JNI 包装器 可以使用以下命令调用第三方供应商包含在 jar文件中的测试项目 java cp product jar com company samples p
  • Firebase google-services.json 具有多个项目?

    对于我们的应用程序 我使用两个不同的 firebase 项目 Live 包含实时 iOS 和 Android 应用程序 测试 包含我们所有的 iOS 和 Android 测试应用程序 据我所知 google services json An
  • 如何使用 Papa Parse 读取本地文件?

    如何使用 Papa Parse 读取本地文件 我本地有一个文件名为challanges csv 但经过多次尝试后我无法用 Papa Parse 解析它 var data Papa parse challanges csv header tr
  • Mapbox-gl 键入不允许 accessToken 分配

    我正在使用带有 TypeScript 的 mapbox gl 库 并且我已经安装了其社区来源的类型定义 types mapbox gl 当我尝试导入并设置 accessToken 以使用该库时 我的 TypeScript 编译器抛出此错误
  • 如何在 R Shiny 中添加“返回页面顶部”按钮?

    这是其他 Web 应用程序中非常常见的功能 但在 R Shiny 中 如何添加一个按钮 让用户在单击时返回页面顶部 除此之外 是否可以设置用户视图向上或向下移动的距离 非常感谢 我搜索了一段时间 但找不到任何关于此的帖子 使用 gotop
  • 如何设置 Atom 的“styles.less”文件来突出显示 Python 中的函数和方法调用?

    我想让它像 Sublime Text 中那样突出显示 我按照建议尝试了here https discuss atom io t how to change the color of python function calls 22660 3
  • 为什么 TypeScript 在实现泛型接口时无法推断函数参数的类型?

    我正在 Visual Studio 2015 中编写 TypeScript 安装了 2 3 3 0 版本的语言服务扩展 我有noImplicitAny参数设置为true在我的项目中tsconfig json 给出这个简单的示例代码 inte
  • 在 AJAX 调用中使用 success() 或complete()

    我想理解下面的 AJAX 调用complete method 当我更换时complete with success 我得到一个空的响应文本就像 AJAX 一样error method 另一方面 当我离开complete 方法就在那里 一切都
  • 配置 AWS Elastic Beanstalk 时区以进行 Auto Scaling

    我部署了一个单实例服务器AWS 弹性豆茎需要时区配置 我将时区更改为使用ssh登录EC2环境 并使用下面列出的linux命令更新它 sudo rm etc localtime sudo ln sf usr share zoneinfo Eu
  • BertTokenizer.from_pretrained 错误并显示“连接错误”

    我正在尝试从 Huggingface 下载 BERT 的分词器 我正在执行 tokenizer BertTokenizer from pretrained bert base uncased Error
  • Python 字典键中的空格

    我知道 Python 字典键中可以有空格 但这被认为是糟糕的编程吗 我在 PEP 中找不到任何与此相关的内容 编辑以澄清 在我正在做的一个项目中 我正在研究解析 Apache 的记分板输出的东西mod status 请参阅下面的示例输出 我
  • 在 ASP.NET MVC3 中正确使用 TempData?

    我有一个 ASP NET MVC3 应用程序 其中我的操作生成了一个 id 列表 我希望将其提供给后续 AJAX 请求 这样我就可以在后台运行一个很长的进程并对其进行轮询 id 列表是这个长时间运行的进程的必要输入 我不想将它们作为参数传递
  • python正则表达式中匹配unicode字符

    我已经阅读了 Stackoverflow 上的其他问题 但仍然没有更进一步 抱歉 如果这个问题已经得到解答 但我没有得到任何建议可以工作 gt gt gt import re gt gt gt m re match r by tag P
  • 具有 VCL 样式的默认按钮

    我对 Default True 的 TButtons 的样式感到困惑 问题是 至少对于某些样式 例如 Luna 最近聚焦的按钮突出显示为橙色 这与默认按钮使用的样式相同 因此 我担心用户可能会对哪个按钮是默认按钮感到困惑 或者至少会认为两个
  • 多次渲染一个组件 React.js

    这是一个简单计数器的代码 但是 当我渲染视图时 我没有得到任何输出 请告诉我代码有什么问题 按下按钮 计数器就会递增并呈现在屏幕上 var Title React createClass getInitialState function r
  • Java utils 类、静态方法与注入 utils 类

    你们如何创建 utils 类 有标准的方法吗 就像标题所说 你可以有这样的东西 public class Utils public static method1 public static method2 并通过调用来使用它Utils me
  • “未定义不是对象” this.state 未绑定

    我的反应本机组件 我通过创建React createClass 似乎没有约束力this关键字正确 导致我无法访问this state 这是我得到的错误 代码如下 我没有看到与网站上的示例有任何本质上的不同 所以我无法弄清楚我做错了什么 我怎