如何将变量传递给onPress?JSON取值传递至handleAnswerQuestion遇错
问题分析与修正方案
我看到你在尝试从JSON数据里提取值传递给按钮的点击事件,但代码里有个明显的语法错误,大概率会导致运行报错。
核心问题
你写的 var a = { myData.results[count].category[count] } 是错误语法——这里的大括号{}会被解析成对象字面量,但你没有指定对应的键名,浏览器/JS引擎根本不知道怎么处理这个表达式。实际上你只是想获取myData.results[count].category[count]这个具体值,完全不需要用大括号包裹。
另外,建议用const替代var(如果a不需要重新赋值的话),这是更现代、更安全的JS写法,能避免变量提升、意外全局污染等问题。
修正后的完整代码
// 正确赋值:直接获取对应属性值,去掉多余的大括号 const a = myData.results[count].category[count]; // styled组件定义保持不变 const TrueButton = styled.TouchableOpacity` padding: 15px 25px 15px 25px; border-radius: 50; backgroundColor: rgba(106,227,104, 0.8); `; // 使用按钮时传递a到事件处理函数,记得补全按钮内部的内容 <TrueButton onPress={() => this.handleAnswerQuestion(a)}> <Text>正确</Text> </TrueButton>
额外注意事项
- 确保
count是已定义的有效数字索引(比如0、1这类),不然会导致undefined,进一步访问category[count]会抛出"Cannot read properties of undefined"错误。 - 确认
myData已经正确加载完成(比如从JSON文件导入、API请求返回后),别在数据未就绪时就访问myData.results。 - 如果
handleAnswerQuestion是类组件的方法,记得提前绑定this(比如在构造器里this.handleAnswerQuestion = this.handleAnswerQuestion.bind(this),或者用箭头函数定义方法),不然方法内部的this会指向错误。
内容的提问来源于stack exchange,提问作者Chris Henry
相关产品推荐
相关产品推荐

