javascript - 从 Expo 项目中的 TextInput 获取文本时,未定义不是对象

标签 javascript react-native

我是 RN 开发的新手,面临以下问题:当我使用 Expo 创建 RN 项目时,我删除了屏幕上的所有内容并添加了必要的组件。所以,我有一个 TextInput,它应该向变量添加数据。因此,这就是我在状态中创建属性的原因:this.state = {text: ''};,它将保留此数据。但是当我运行项目时,出现此错误:undefined is not an object。这是我的屏幕代码:

export default function HomeScreen() {

    this.state = {text: ''};

    return (

        <View style={styles.container}>
            <ScrollView
                style={styles.scrollViewContainer}
                contentContainerStyle={styles.contentContainer}>
                <View style={styles.searchContainer}>

                    <TextInput
                        placeHolder="Type something!"
                        onChangeText={(text) => this.setState({text})}
                        value={this.state.text}
                    />

                </View>

                <View>

                    <Button
                        onPress={Alert.alert("Button pressed!")}
                        title="Search"
                    />

                </View>

                <View style={styles.listContainer}>

                    <Text>{this.state.text}</Text>

                </View>

            </ScrollView>


        </View>
    )
        ;
}

所以,也许这个问题很愚蠢,但是请解释一下这是怎么回事以及我该如何解决这个问题。也许代码中还有其他一些地方需要更改?

最佳答案

onPress 应该调用一个函数。试试这个方法:

<Button
  onPress={() => Alert.alert("Button pressed!")}
  title="Search"
/>

Handling Touches docs: 中解释了同一示例

希望对你有帮助

关于javascript - 从 Expo 项目中的 TextInput 获取文本时,未定义不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57270188/

相关文章:

javascript - 当我使用 NavigatorIOS 时,为什么初始 View 是空的?

javascript - 类型错误 : TypeError: null is not an object (evaluating 'this.state.email' )

css - react native flex 50% 导致错误

javascript - 使用 Javascript 创建询问输入用户名和密码的提示的最佳方法是什么

javascript - Ember.js:在路由中嵌套资源

javascript - 保持两个 Meteor 集契约(Contract)步

javascript - 有没有办法只显示特定行的剑道网格列?

react-native - 使用 react-native 抽屉实现侧边栏/汉堡菜单

javascript - 如何从导入调用异步函数?

javascript - 在图像加载时开始幻灯片放映