【问题标题】:React Native - Undefined is not an objectReact Native - 未定义不是对象
【发布时间】:2021-04-13 15:21:17
【问题描述】:

我想获取 json 响应的最后一项。

当我执行console.log(this.state.details.sessions) 时,它会显示我正在关注 json 对象。

[{"login_time": "12-04-2021 20:52:29", "logout_time": ""}, {"login_time": "12-04-2021 20:54:53", "logout_time": "12-04-2021 20:55:13"}] 

但是如果尝试获取此项目的长度,例如: Object.keys(this.state.details.sessions).length 我收到以下错误:

undefined 不是对象(评估 'Object.keys(data.sessions)')

const {number} = this.props.route.params;
database().ref('/numbers/'+number.replace('+', ''))
          .on('value', (snapshot) => {
            const userObj = snapshot.val();
            this.setState({
                details: userObj
          })
});

console.log(Object.keys(this.state.details.sessions).length);

可能是什么问题?

【问题讨论】:

  • data.sessions[data.sessions.length - 1]; 获取最后一项
  • @decpk 刚刚更新了帖子,它仍然显示错误。 "(未定义不是一个对象(评估'data.sessions.length')
  • 毕竟是how-do-i-return-the-response-from-an-asynchronous-call。我有点困惑,因为结构是嵌套的,并且您在数组上使用 Object.keys,但是哦,好吧。
  • @ASDFGerte 你能解释一下如何以正确的方式做吗?

标签: javascript json react-native


【解决方案1】:

在第一个this.state.details.sessionsundefined,你不能在上面使用Object.keys

在你设置数据之后

this.setState({
  details: userObj,
});

this.state.details.sessions其实是一个数组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2017-05-05
    相关资源
    最近更新 更多