Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React递归树传递JSON路径_Javascript_Json_Reactjs_Recursion_Computer Science - Fatal编程技术网

Javascript React递归树传递JSON路径

Javascript React递归树传递JSON路径,javascript,json,reactjs,recursion,computer-science,Javascript,Json,Reactjs,Recursion,Computer Science,我目前正在使用React创建一个递归树,并且遇到了另一个障碍。我试图从JSON结构中传递路径。所以对于每个孩子,我想传递一个物体道具,看起来像这样 一级儿童(点击水果) {值:“水果”} 二级儿童(点击热带) {value:“水果”,嵌套的_值:[{value:'热带'}]} 三级儿童(点击菠萝) {value:“水果”,嵌套的_值:[{value:'热带',嵌套的_值:[{value:'菠萝'}]} 等等。。。递归地 我需要在这里选择一个树元素,并将该特定元素的完整JSON结构/路径发送到Re

我目前正在使用React创建一个递归树,并且遇到了另一个障碍。我试图从JSON结构中传递路径。所以对于每个孩子,我想传递一个物体道具,看起来像这样

一级儿童(点击水果)

{值:“水果”}

二级儿童(点击热带)

{value:“水果”,嵌套的_值:[{value:'热带'}]}

三级儿童(点击菠萝)

{value:“水果”,嵌套的_值:[{value:'热带',嵌套的_值:[{value:'菠萝'}]}

等等。。。递归地

我需要在这里选择一个树元素,并将该特定元素的完整JSON结构/路径发送到Redux存储

任何帮助都将不胜感激

当前代码

createTree(data, isSub, lev) {
    let level = lev || 0;
    let children = [];
    for (let i in data) {
        if (typeof(data[i].nested_values) === 'object') { // Sub array found, build structure
            children.push(
                <div class={"filter-group level-" + (level)}>
                    <div class="filter-heading">{data[i].value}</div>
                    {this.createTree(data[i].nested_values, true, level)}
                </div>
            );
        } else { // No submenu, bottom of tree
            children.push(
                <span key={i}>
                    {data[i].value}               
                </span>
            );
        }
    }
    return <div className='filter-body open'>{children}</div>;
}

应用这个基本的递归模式(不要陷入复杂的函数中)

或多或少,你可以这样做:

const Component = ({data}) => <div>
      <Row>{data['value']}</Row>
      {data['nested_values'].map(data=><RComponent data={data}/>}
</div>
const RComponent= (props)=><Component{...props}/>

export default Component 
const组件=({data})=>
{data['value']}
{data['nested_values'].map(data=>}
常量RComponent=(道具)=>
导出默认组件
然后,无论何时需要:

<Component data={data}/>


为什么不在用户端执行此操作?您的确切问题是什么?什么不起作用?我根本不知道如何构建动态对象,然后在这个递归循环中将其传递给子对象
<Component data={data}/>