如何迭代嵌套对象并在 jsx 中渲染?
How to iterate nested objects and render inside jsx?
如何在我的 jsx 组件中渲染嵌套地图?
我需要做相当于 javascript for(key in groupItem){}
见下文。
class MyComponent extends React.Component {
render () {
var options = this.props.options;
return (
<div>
{options.map(function(groupItem, key){ return (
/*
Unexpected Token if using groupItem.map?
{groupItem.map(function(){return })}
*/
)})}
</div>
)
}
}
Dropdown.defaultProps = {
options:[{
'groupX':{
'apple':'lovely green apple',
'orange':'juicy orange',
'banana':'fat banana'
}
}]
}
JSON.stringify(groupItems) === {
'groupX':{
'apple':'lovely green apple',
'orange':'juicy orange',
'banana':'fat banana'
}
}
为什么这些不起作用?
groupItem.map
- 不起作用
Object.keys(groupItem).forEach(函数(键){
- 不起作用
您的 Object.keys 实现几乎是正确的(map 是仅用于数组的 属性),但语法错误来自包装 {}
。您不需要转义,您已经在 js
语法中。
return (
<div>
{options.map(function(groupItem, key){ return (
Object.keys(groupItem).map(function(item){return (
<YourComponent group={groupItem} item={item} />
);})
);})}
</div>
);
我决定创建自己的方法,因为它很笨拙。
function each(obj, callback){
return (Array.isArray(obj))? forArray(obj, callback):forObject(obj, callback);
}
function forArray(obj, callback){
return obj.map(callback);
}
function forObject(obj, callback){
return Object.keys(obj).map(callback);
}
class MyComponent extends React.Component {
render () {
var options = this.props.options;
return (
<div>
{each(options, function(groupItem){ return (
each(groupItem, function(key){return (
这更容易阅读。
如何在我的 jsx 组件中渲染嵌套地图?
我需要做相当于 javascript for(key in groupItem){} 见下文。
class MyComponent extends React.Component {
render () {
var options = this.props.options;
return (
<div>
{options.map(function(groupItem, key){ return (
/*
Unexpected Token if using groupItem.map?
{groupItem.map(function(){return })}
*/
)})}
</div>
)
}
}
Dropdown.defaultProps = {
options:[{
'groupX':{
'apple':'lovely green apple',
'orange':'juicy orange',
'banana':'fat banana'
}
}]
}
JSON.stringify(groupItems) === {
'groupX':{
'apple':'lovely green apple',
'orange':'juicy orange',
'banana':'fat banana'
}
}
为什么这些不起作用?
groupItem.map - 不起作用
Object.keys(groupItem).forEach(函数(键){ - 不起作用
您的 Object.keys 实现几乎是正确的(map 是仅用于数组的 属性),但语法错误来自包装 {}
。您不需要转义,您已经在 js
语法中。
return (
<div>
{options.map(function(groupItem, key){ return (
Object.keys(groupItem).map(function(item){return (
<YourComponent group={groupItem} item={item} />
);})
);})}
</div>
);
我决定创建自己的方法,因为它很笨拙。
function each(obj, callback){
return (Array.isArray(obj))? forArray(obj, callback):forObject(obj, callback);
}
function forArray(obj, callback){
return obj.map(callback);
}
function forObject(obj, callback){
return Object.keys(obj).map(callback);
}
class MyComponent extends React.Component {
render () {
var options = this.props.options;
return (
<div>
{each(options, function(groupItem){ return (
each(groupItem, function(key){return (
这更容易阅读。