我是 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/