2017-04-06 64 views
2

我有一个组件“Form”。我也有一些从我的mongoDB数据库中获得的数据,并且其状态为(myData) I dispatch。为什么我无法从这个对象渲染数据?我怎么能够?

所以在表单组件,我有一个mapstatetoprops功能myData的转换为道具。 myData是一个对象。

我想从myData的对象使用数据并显示一些在该部件的返回功能该对象的属性。

当我在渲染方法输入:

const {myData} = this.props; 

console.log(myData); 

我可以看到我的对象及其在控制台的内容,我想要的方式。

{} myData的看起来像这样:

{ title: "mytitle", comments: [{comment: "qqq", vote: 1}, {comment: "www", vote: 2}]} 

但是,由于某种原因,我不明白,我不能在组件的回归方法使用{myData}。当我这样做时,我收到以下错误消息:

对象作为React子项无效。如果你的意思是渲染 收集儿童的,使用数组来代替或使用包裹从 ​​对象的阵营附加

我明白你不能在返回使用对象。但它是我拥有的一个对象,而不是一个Array。

我希望我能在我的return : {myData.title}写这篇文章,看看标题时,我的组件呈现。

下返回错误信息:myData is undefined

render(){ 

    const {myData} = this.props; 

    console.log(myData); 

    return(

    <div>{myData.title}</div> 

) 

回答

1

既然你是在console获得应有的价值,它看起来像当它第一次被渲染,也没有找到myDataprops值,你要记住,你在console看到输出保持在你扩大属性,此刻不console.log被称为瞬间计算。实际上,Object旁边的小i图标告诉你。

所以只是把上一查,它应该工作,像这样:

render(){ 
    const {myData} = this.props; 
    console.log(myData); 
    return(
     <div> Hello {myData && myData.title} </div> 
    ) 
} 

运行这browser console,扩大object,它会显示更新的值不是初始值:

obj = {a: 1, b: 2, c: 3, d: 5, arr: []}; 
console.log(obj); 
obj.a = 5; 
+0

好了,这工作:) 时,你说,它没有找到myData的内道具值你说的没错。控制台日志返回'未定义',然后'[HMR]连接',然后只有对象。 你能否详细说明:_is此刻计算展开的性质,不是现在的console.log被called_ 我不明白这一点。或者你有链接? –

+0

这意味着假设你有一个具有一些值的对象a,并且你做了'console.log(a)',之后你在'console'中做了一些改变,你会看到更新的'a'值不是原始值,即使您在执行“a”中的更改之前使用了'console.log'。在展开“对象”时,始终会在运行时计算均值,它将打印出“a”的更新值。 –

+0

为了避免这种情况,并以更清晰的方式编写代码,是否意味着我应该在父组件中连接我的“myData”状态,而不是使用myData的组件? –

相关问题