我有这样的对象数据:
[
{
"id": "1",
"obj1": {
"val1": "15",
"val2": "2.6"
},
"obj2": {
"val3": "39",
"val4": "87"
},
"arr1": [
{
"ar1": "nd",
"ar11": "https://url"
},
{
"ar1": "eeh",
"ar11": "url"
}
],
"arr2": [
{
"l1": "land",
"l2": "re"
}
]
}
]
我通过道具将这些数据从父组件传递到子组件,并尝试使用map来迭代和呈现输出,如下所示:
import React, {Component} from 'react';
class Output extends Component {
render() {
const myobj = this.props;
console.log(myobj);
Object.keys(myobj).map(function(key) {
return( <div>Key: {key}, Value: {myobj[key]}</div> );
});
}
}
export default Output;
但是我知道render
必须有一个return语句,所以我应该怎么写呢?
答案 0 :(得分:4)
您的收益在.map
函数内部。但是它不会在render
中返回。您只需要从.map
// this return is inside render
return Object.keys(myobj).map(function(key) {
// this return is inside .map
return( <div>Key: {key}, Value: {myobj[key]}</div> );
});
您应该查看ivica.moke注释,因为您无法渲染对象,所以会出现错误。
我不确定您要做什么,因为在您的问题中,您只提到了问题render must have a return statement
。
因此,请解释当该值是一个对象时要做什么以及如何呈现它。
如果要可视化对象内部的内容,可以尝试JSON.stringify(obj, null, 2)
答案 1 :(得分:0)
render()
方法需要返回一些jsx
才能在视图中显示。 .map
返回jsx
,但没有返回到render
方法。添加了return
语句
import React, {Component} from 'react';
class Output extends Component {
render() {
const myobj = this.props;
console.log(myobj);
return Object.keys(myobj).map(function(key) {
return( <div>Key: {key}, Value: {myobj[key]}</div> );
});
}
}
export default Output;