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

this.setState未定义

夔光霁
2023-03-14
问题内容

我一直看到说使用=>或.bind(this)的答案,但这些解决方案均无效。

import React, { Component } from 'react';
import { View, Text, TextInput, StyleSheet } from 'react-native';

export default class MyWeatherApp extends Component {
  constructor(props) {
  super(props);

  this.state = {};
}

getInitialState() {
  return {
    zip: '',
    forecast: null,
  };
}

_handleTextChange(event) {
  var zip = event.nativeEvent.text;
  this.setState({zip: zip});
}

解:

_handleTextChange = (event) => {
  var zip = event.nativeEvent.text;
  this.setState({zip: zip});
  alert('click');
}

问题答案:

当你extend React.Component与ES2015类语法,你需要你的动作处理程序绑定到你的类的上下文。

试试这个: onChange={e => _handleTextChange(e)}

通常,最好不要在其中使用箭头函数或bind方法,render因为它会在每次render调用时生成该函数的新副本。将函数声明移到class constructor

我个人更喜欢在这种情况下使用箭头函数作为类属性

class MyClass extends React.Component {

  handleClick = () => {
    // your logic
  };

  render() {
    return (
      <button onClick={this.handleClick}>Click me</button>
    );
  }
}

它不是ES2015规范的一部分,但babel stage-0预设支持此语法

您可以在本文中的React中阅读有关上下文绑定的更多信息



 类似资料:
  • 当我们有了前面知识的铺垫,就很容易理解this.setState的工作流程。 流程概览 可以看到,this.setState内会调用this.updater.enqueueSetState方法。 Component.prototype.setState = function (partialState, callback) { if (!(typeof partialState === 'ob

  • 我试图在登录屏幕上向用户显示progressLoader,直到web服务响应到来。当我按下登录按钮时,它工作。问题是当我试图在响应中从此行隐藏this.setState({showLoader:false})时,我得到的是未定义的this.setState。即使我在这个问题中正确地设置了上下文,this.setState也不是一个函数

  • 对不起,我能看到这个问题本问了好几次。我以前解决过这个问题,但我知道我正在以一种新的方式看待它。 这是我在流量存储中的构造函数: 下面是我通过TodoActions.fuction子组件中的Name调用的一些函数: 我得到

  • 问题内容: 我有以下组件,该组件维护在特定元素上触发事件时更新的状态,并且在更新状态时将其作为道具传递给另一个组件。我目前正在尝试为什么我得到以下错误“ this.setState不是函数”,它很可能没有绑定到正确的上下文。但是我不确定,我这样做正确吗? 编辑: 我只是意识到上下文会在“onreadyStateChange”函数时发生更改,所以我在searchGif中做了以下操作 问题答案: 您正

  • 我试图在setTimeout之后进行状态更改以更改类名,但是,我总是得到一个“aboutheader.jsx:21 uncathed typeerror:this.setstate不是一个函数”。从“React”导入React; require('../../stylesheets/component/aboutheader.scss'); timeDelay(){setTimeout(函数upd

  • 我有以下组件,它维护当事件在特定元素上被激发时更新的状态,并且当状态被更新时,它将作为道具传递给另一个组件。我正在尝试为什么会出现以下错误“this.setstate is not a function”,它很可能没有绑定到正确的上下文。但我不确定这一点,我这样做对吗? 编辑:我刚刚意识到当“onreadystatechange”函数时上下文会发生变化,所以我在searchGif中做了以下操作