ios - 按下时更改状态

标签 ios reactjs react-native

我想在点击 TouchableOpacity 时更改文本元素内的字符串。但是每当我点击它时,它都会给我一个 this.setState is not a function 的错误。

这是我的代码:

constructor(props) {
    super(props);
    this.state = {
        sampleText: "Click Here"
    };
}

clickText() {
    this.setState({
        sampleText: 'Hello World'
    });
}
render() {
    return (
        <View style={styles.container}>
            <TouchableOpacity onPress={this.clickText}>
                <View style={[styles.avatar, styles.avatarContainer]}>
               <Text>{this.state.sampleText}</Text>
                </View>
            </TouchableOpacity>

        </View>
    );
}

最佳答案

对于 React.Component es6 类,您需要将回调的上下文绑定(bind)到 this(您的类实例)。你可能习惯于 React.createClass,它在幕后为你做了一些绑定(bind):

<TouchableOpacity onPress={this.clickText.bind(this)}>

您还可以使用 arrow functions 进行绑定(bind):

<TouchableOpacity onPress={e => this.clickText(e)}>

关于ios - 按下时更改状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33563678/

相关文章:

ios - Objective-C WatchOS 发送短信

ios - swift 4.0 : Overriding 'prepare' must be as available as declaration it overrides

reactjs - 如何在 Material 表中显示菜单项

ios - 子项目找不到通过 Pods 安装的 Swift 模块

react-native - 缺少包 "metro/src/lib/attachWebsocketServer"

iphone - 使用 AFHTTPClient 设置非默认 HTTP header

javascript - ReactJS:无法在现有状态转换期间更新(例如在 `render` 内)。渲染方法应该是 props 和 state 的纯函数

reactjs - componentDidMount 无法使用自定义 _document.js 在 NextJS 上工作

javascript - 无法从/projectFolder 中找到模块 'react-native-reanimated/plugin'

ios - 向 NSMutableArray 添加数据