我一直看到说使用=>或.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中做了以下操作