获取错误' undefined不是一个对象'使用带有React Native

时间:2017-05-10 17:20:38

标签: javascript mobile react-native

我是React Native的新成员。

作为一种惯例,我正在构建一个简单的React Native应用程序,我将连接到HubSpot的API以检索一些博客帖子,显示它们并与它们进行交互。现在这很好,但是当我解析JSON时,我想出了一个字段" publish_date"包含时间戳。出于某种原因,这个时间戳包含3个额外的数字,我认为这是针对时区的。无论如何,当我使用' react-timestamp'输出时间戳时,我使用这个值,我得到的日期太过分了。所以我想使用substring删除最后3位数并输出正确的日期。

这是失败代码的一部分:

renderRow(post) {
    return(
        <View style={styles.row}>
            <Image style={styles.image} source={{uri: post.featured_image}} />
            <View style={styles.info}>
                <Text style={styles.title}>{post.title}</Text>
                <Text style={styles.author}>Por {post.author_name}</Text>
                <Timestamp time={post.publish_date.substring(10)} component={Text} format='date' />
            </View>
        </View>
    );
}

render() {
    return(
        <ListView
            dataSource={this.state.dataSource}
            renderRow={this.renderRow.bind(this)}
            style={styles.page}
         />
    );
}

当我运行它时,我收到下一个错误:

Error

我不知道我做错了什么,这对我来说都是新的。昨天我试图使用.replace(&#39;&#39;)时遇到了同样的错误,所以我放弃了并寻求另一种解决方案。在这种情况下,我认为我无法做任何其他事情。

2 个答案:

答案 0 :(得分:0)

尝试记录您的帖子对象,看看是否定义了"publish_date"

根据错误,传递给函数renderRow的对象帖子上没有"publish_date"属性,因此,对子字符串的调用失败。

答案 1 :(得分:0)

好的,所以经过很多次,没有得到答案,甚至在模块的Git中打开一个问题,我决定继续寻找。

事实上,实际上我的时间戳是以毫秒为单位,当将其转换为毫秒时,过程中的某些内容会使Timestamp模块崩溃。所以,我决定放弃它并使用另一种方法。

它是这样的:

^[x-X][0-9]{11}$

现在我得到了正确的日期而无需外部模块。希望这对任何人都有帮助,但我不认为世界上任何人都像我这样面对这个问题。无论如何,谢谢大家。