React元素呈现为对象

时间:2017-06-22 19:03:02

标签: reactjs

元素“not__uploaded”呈现为[object Object]。我对React很新,我似乎无法弄清楚这里有什么问题。

'responseRecieved'是一个布尔值,用于跟踪是否进行了api调用。

ce('div', {
    className: 'response__done'
},
ce('p', {
    className: ''
}, 'Upload results: '),
`${responseRecieved ?
   response.not_uploaded.map(({ msg, post_category }) =>
                ce('div', {className: 'not__uploaded clearfix'},
                  ce('p', {className: ''},
                    msg,
                    ' for post with',
                    post_category[0],
                  ),
                ))
             : ''}`
)

enter image description here

1 个答案:

答案 0 :(得分:1)



`${responseRecieved ?
   response.not_uploaded.map(({ msg, post_category }) =>
                ce('div', {className: 'not__uploaded clearfix'},
                  ce('p', {className: ''},
                    msg,
                    ' for post with',
                    post_category[0],
                  ),
                ))
             : ''}`




这整段代码都包含在模板字符串``中,因此最终结果将是一个字符串。

response.not_uploaded.map必然会返回一个数组。根据问题的当前输出判断,它返回一个包含2个insdie对象的数组。这个带有2个对象的数组依次在字符串模板中呈现,这基本上是将数组强制转换为字符串。被强制转换为字符串的数组的默认行为是在该数组上调用toString()。数组的默认toString()实现正在调用Array.join(',')。这就是为什么你的对象以逗号字符分隔的字符串形式出现的原因。

最后,数组中的两个对象也被强制转换为字符串值(在每个对象上调用toString())。显然,您的任何对象都没有toString()实现,因此javascript只是默认为"object Object"