猿问

在 Expo 项目中从 TextInput 获取文本时 undefined 不是对象

我是 RN 开发的新手,面临以下问题:当我用 Expo 创建 RN 项目时,我从屏幕上删除了所有内容并添加了必要的组件。所以,我有一个TextInput,它应该将数据添加到变量中。所以,这就是我在 state: 中创建属性的原因 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>

    )

        ;

}

所以,也许这个问题很愚蠢,但请解释这是什么问题以及我该如何解决这个问题。也许代码中还有其他一些时刻,哪些应该改变?


达令说
浏览 179回答 3
3回答

偶然的你

该onPress应该调用的函数。试试这个方法:<Button&nbsp; onPress={() => Alert.alert("Button pressed!")}&nbsp; title="Search"/>处理触摸文档中解释了相同的示例:希望能帮助到你,

红颜莎娜

如果您使用功能组件,则绝对应该使用 Hooks 而不是state对象,但是当您使用 Expo 时,我猜所使用的 React 和 React Native 版本太旧,无法启用 Hooks将您的组件更改为类组件,因此在构造函数中您可以拥有一个状态对象,并在您的渲染方法中使用它
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答