React Native函数式组件useState不生效 点击按钮控制台无输出报错
问题原因
- 语法报错触发原因:return返回的JSX结构末尾存在无效字符串
enter code here,该内容不属于任何合法JSX节点,直接放在闭合标签外导致编译语法报错。 - 控制台无预期输出原因:TextInput组件的
onChange事件返回值是原生事件对象,不是用户输入的文本内容,你直接将事件对象存入entGoal状态,存储内容不符合预期,自然无法打印输入的目标内容。
修复方案
- 删除JSX结构末尾多余的
enter code here无效代码,解决语法报错问题。 - 将TextInput的
onChange属性替换为onChangeText,该API是React Native针对输入组件提供的便捷回调,会直接返回用户输入的字符串,匹配你现有textHandler的参数接收逻辑。
修复后完整代码
import { StatusBar } from "expo-status-bar"; import React, { useState } from "react"; import { StyleSheet, Text, View, Button, TextInput } from "react-native"; export default function App() { const [entGoal, setEntGoal] = useState(""); const textHandler = (entText) => { setEntGoal(entText); }; const addHandler = () => { console.log(entGoal); }; return ( <View style={{ margin: 12, padding: 50 }}> <View> <Text>Goals List!</Text> <TextInput placeholder="Enter Goal" style={{ borderBottomWidth: 1, borderColor: "black" }} value={entGoal} onChangeText={textHandler} /> <Button title="Add (+)" onPress={addHandler} /> </View> </View> ); }
内容的提问来源于stack exchange,提问作者Athira M V
相关产品推荐
相关产品推荐

