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

React Native调用this.state报Undefined is not an object问题求助

问题根因

报错的核心原因是数组map方法使用普通匿名函数导致组件实例的this指向丢失。
你在getQuestions方法中调用this.state.questions.map和qIndex.answers.map时,传入的是function() {}格式的普通匿名函数,普通函数的this指向的是调用时的上下文而非当前组件实例,因此在函数内部访问this.state会抛出undefined相关错误。
你之前提前把state值赋值给局部变量能生效,是因为变量声明在map函数外部,此时的this还是绑定组件实例的,相当于提前存值绕开了内部的this指向问题。

修复方案

把两个map的回调函数替换为箭头函数即可,箭头函数不会创建独立的this,会继承外层作用域的this指向(也就是当前组件实例),修改后就可以在map内部直接访问this.state或者调用组件方法。

具体修改代码:

  1. 外层问题遍历的map替换:
// 原代码
this.state.questions.map(function (qIndex, index) {
// 修改为
this.state.questions.map((qIndex, index) => {
  1. 内层选项遍历的map替换:
// 原代码
qIndex.answers.map(function (ansIndex, index1) {
// 修改为
qIndex.answers.map((ansIndex, index1) => {

额外优化提示

你代码中样式数组的写法存在小错误:style={[styles.question], {xxx}}的格式不符合规范,多出来的右括号会导致外层的styles.question不生效,正确写法应该是把所有样式对象放在同一个数组内:

style={[styles.question, {
  backgroundColor: this.state.theme.secondary,
  color: font_color,
  padding: '2%',
  borderRadius: 5
}]}

内容的提问来源于stack exchange,提问作者user14055011

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:02