Javascript 获取错误';未定义不是对象';将子字符串与React Native一起使用时

Javascript 获取错误';未定义不是对象';将子字符串与React Native一起使用时,javascript,mobile,react-native,Javascript,Mobile,React Native,我是新来的 作为实践,我正在构建一个简单的React原生应用程序,在这里我连接到HubSpot的API来检索一些博客文章,显示它们并与它们交互。现在一切正常,但在解析JSON时,我会生成一个字段“publish_date”,其中包含一个时间戳。由于某种原因,这个时间戳包含3个额外的数字,我认为这是时区的。无论如何,当我使用'react timestamp'输出时间戳时,我使用了这个值,我得到的日期太远了。所以我想使用substring删除最后3位数字并输出正确的日期 这是失败代码的一部分: re

我是新来的

作为实践,我正在构建一个简单的React原生应用程序,在这里我连接到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}
         />
    );
}
renderRow(post){
返回(
{post.title}
Por{post.author_name}
);
}
render(){
返回(
);
}
当我运行它时,会出现下一个错误:


我不知道我做错了什么,这对我来说是全新的。昨天我在尝试使用.replace(“”)时遇到了相同的错误,所以我放弃了,转而使用另一个解决方案。在这种情况下,我想我不能再做其他事情了。

尝试记录您的post对象,看看是否定义了
“发布日期”


根据错误,传递给函数renderRow的对象post上没有
“publish\u date”
属性,因此,对子字符串的调用失败。

尝试记录post对象,查看是否定义了
“publish\u date”


根据错误,在传递给函数renderRow的对象post上没有
“publish\u date”
属性,因此,对子字符串的调用失败。

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

事实上,我的时间戳是以毫秒为单位的,当将它转换为毫秒时,过程中的某些东西使时间戳模块崩溃。所以,我决定放弃这个,用另一种方法

事情是这样的:

var datePosted = new Date(post.publish_date).toString();

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

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

事实上,我的时间戳是以毫秒为单位的,当将它转换为毫秒时,过程中的某些东西使时间戳模块崩溃。所以,我决定放弃这个,用另一种方法

事情是这样的:

var datePosted = new Date(post.publish_date).toString();

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

如果我删除子字符串函数,我会得到一个时间戳,因此,publish\u date变量包含一些内容。问题是它包含3个额外的数字,所以如果我把它转换成一个普通的日期格式,我会得到一个4000年左右的日期。这就是为什么我想使用substring函数。我认为错误来自其他方面,因为正如我所说的,我试图用一个简单的字符串来使用replace函数,结果得到了完全相同的错误。无论如何,谢谢。额外的三位数字,我觉得你得到的是以毫秒为单位的时间戳,而不是以秒为单位尝试将时间戳除以1000,然后将其转换为日期,我认为你应该得到一个正确的日期。我更新了我的代码,我添加了:
var date=post.publish\u date;日期=日期/1000现在我得到了这个错误:“null不是一个对象(计算'date.split')”。我真的很沮丧,这真的很令人沮丧。尝试删除所有时间戳组件并记录所有post.publish\u日期,查看是否所有post都具有该属性。如果没有,则仅为定义该属性的post显示时间戳。我认为这与我如何在React组件中实现javascript功能有关,因为我无法以我尝试过的任何方式实现这一点。正如我之前说过的,它与API提供的信息无关。谢谢你抽出时间!:)如果删除substring函数,就会得到一个时间戳,因此,publish_date变量包含一些内容。问题是它包含3个额外的数字,所以如果我把它转换成一个普通的日期格式,我会得到一个4000年左右的日期。这就是为什么我想使用substring函数。我认为错误来自其他方面,因为正如我所说的,我试图用一个简单的字符串来使用replace函数,结果得到了完全相同的错误。无论如何,谢谢。额外的三位数字,我觉得你得到的是以毫秒为单位的时间戳,而不是以秒为单位尝试将时间戳除以1000,然后将其转换为日期,我认为你应该得到一个正确的日期。我更新了我的代码,我添加了:
var date=post.publish\u date;日期=日期/1000现在我得到了这个错误:“null不是一个对象(计算'date.split')”。我真的很沮丧,这真的很令人沮丧。尝试删除所有时间戳组件并记录所有post.publish\u日期,查看是否所有post都具有该属性。如果没有,则仅为定义该属性的post显示时间戳。我认为这与我如何在React组件中实现javascript功能有关,因为我无法以我尝试过的任何方式实现这一点。正如我之前说过的,它与API提供的信息无关。谢谢你抽出时间!:)好吧,我花了很多时间在这方面,得到了一些不同的结果。我想问题可能直接出在时间戳模块上