React js return 函数递归
React js return function recursive
您好,我正在尝试使用递归打印数据,这是函数:
function list({ data, tab }){
if( !data || !data.length ){
return null;
}
return data.map( item => {
<React.Fragment>
<div className="row" key={item.id} >
<div className="col-md-10">
{ tab + item.name}
</div>
<div className="row col-md mx-auto">
<Link
to={`/edit/${item.id}`}
className="col-md px-0"
title="Edit"
>
Edit
</Link>
<button
className="col-md px-0"
onClick={ () => delete(item.id) }
title="Delete"
>
Delete>
</button>
</div>
</div>
<list data={item.child} tab={tab+"\t"} />
</React.Fragment>
});
}
因此数据结构如下:
[
{
id: '0',
name: 'name 1'
parent: null,
child:[{
id: '4',
name: 'name 4'
parent: '0',
child:[{
id: '3',
name: 'name 3'
parent: '4',
child:[{}]
}]
},
{
id: '2',
name: 'name 2'
parent: '0',
child:[{
id: '5',
name: 'name 5'
parent: '2',
child:[{}]
}]
},
{
id: '6',
name: 'name 6'
parent: '0',
child:[{}]
}
]
}
]
你可以看到这棵树是完全动态的,所以我可以使用递归来解决它,但是我遇到了一些问题,我只显示了“名称 1”,而不是所有数据,我该怎么办怎么做才能得到它???
这样的事情怎么样...
const rows = []
const data = [
{
id: '0',
name: 'name 1',
parent: null,
child: [{
id: '4',
name: 'name 4',
parent: '0',
child: [{
id: '3',
name: 'name 3',
parent: '4',
child: [{}]
}]
},
{
id: '2',
name: 'name 2',
parent: '0',
child: [{
id: '5',
name: 'name 5',
parent: '2',
child: [{}]
}]
},
{
id: '6',
name: 'name 6',
parent: '0',
child: [{}]
}]
}
]
const Row = (item, tab) => {
return (
<div className="row" key={item.id}>
<div className="col-md-10">
{tab + item.name}
</div>
<div className="row col-md mx-auto">
<Link
to={`/edit/${item.id}`}
className="col-md px-0"
title="Edit"
>
Edit
</Link>
<button
className="col-md px-0"
onClick={() => delete (item.id)}
title="Delete"
>
Delete>
</button>
</div>
</div>
)
}
const print = (data, tab) => {
data.forEach(item => {
if (Object.keys(item).length === 0) {
return
}
rows.push(Row(item, tab))
if (item.child && item.child.length > 0) {
print(item.child, tab + "\t")
}
})
}
print(data, '')
return rows
您好,我正在尝试使用递归打印数据,这是函数:
function list({ data, tab }){
if( !data || !data.length ){
return null;
}
return data.map( item => {
<React.Fragment>
<div className="row" key={item.id} >
<div className="col-md-10">
{ tab + item.name}
</div>
<div className="row col-md mx-auto">
<Link
to={`/edit/${item.id}`}
className="col-md px-0"
title="Edit"
>
Edit
</Link>
<button
className="col-md px-0"
onClick={ () => delete(item.id) }
title="Delete"
>
Delete>
</button>
</div>
</div>
<list data={item.child} tab={tab+"\t"} />
</React.Fragment>
});
}
因此数据结构如下:
[
{
id: '0',
name: 'name 1'
parent: null,
child:[{
id: '4',
name: 'name 4'
parent: '0',
child:[{
id: '3',
name: 'name 3'
parent: '4',
child:[{}]
}]
},
{
id: '2',
name: 'name 2'
parent: '0',
child:[{
id: '5',
name: 'name 5'
parent: '2',
child:[{}]
}]
},
{
id: '6',
name: 'name 6'
parent: '0',
child:[{}]
}
]
}
]
你可以看到这棵树是完全动态的,所以我可以使用递归来解决它,但是我遇到了一些问题,我只显示了“名称 1”,而不是所有数据,我该怎么办怎么做才能得到它???
这样的事情怎么样...
const rows = []
const data = [
{
id: '0',
name: 'name 1',
parent: null,
child: [{
id: '4',
name: 'name 4',
parent: '0',
child: [{
id: '3',
name: 'name 3',
parent: '4',
child: [{}]
}]
},
{
id: '2',
name: 'name 2',
parent: '0',
child: [{
id: '5',
name: 'name 5',
parent: '2',
child: [{}]
}]
},
{
id: '6',
name: 'name 6',
parent: '0',
child: [{}]
}]
}
]
const Row = (item, tab) => {
return (
<div className="row" key={item.id}>
<div className="col-md-10">
{tab + item.name}
</div>
<div className="row col-md mx-auto">
<Link
to={`/edit/${item.id}`}
className="col-md px-0"
title="Edit"
>
Edit
</Link>
<button
className="col-md px-0"
onClick={() => delete (item.id)}
title="Delete"
>
Delete>
</button>
</div>
</div>
)
}
const print = (data, tab) => {
data.forEach(item => {
if (Object.keys(item).length === 0) {
return
}
rows.push(Row(item, tab))
if (item.child && item.child.length > 0) {
print(item.child, tab + "\t")
}
})
}
print(data, '')
return rows