You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将变量传递给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:34:00