react.js - react key的问题

查看:114
本文介绍了react.js - react key的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

想要封装一个树菜单,里面需要递归,但是key报错了
1、menu.js

import React from "react";
import Item from "./components/Item";

class Menu extends React.Component{

    render(){
        const data = this.props.data;
        return (
            <ul>
                {data.map((item, index) => {
                    let $item = <Item
                        key={item.id}
                        {...item}
                        index={index}
                    />;

                    if(item.children){
                        return <li>
                            {$item}
                            <Menu data={item.children}/>
                        </li>
                    }else{
                        return <li>
                            {$item}
                        </li>
                    }
                })}
            </ul>
        );
    }
}

Menu.propTypes = {
    data: React.PropTypes.array,
    outlook: React.PropTypes.bool,
    activeId: React.PropTypes.string
};

Menu.defaultProps = {
    data: [],
    outlook: true
};

export default Menu;

2、Item.js

import React from "react";

class Item extends React.Component{
    render(){
        let name = this.props.name;
        return (
            <a href="#">{name}</a>
        );
    };
}

export default Item;

3、index.js

import Menu from "./menu";
import React from "react";
import { render } from "react-dom";

const data = [
    {
        name: "一级菜单1",
        id: 1,
        children: [
            {
                name: "二级菜单1",
                id: 11,
                children: [
                    {
                        name: "三级菜单1",
                        id: 111
                    }
                ]
            },
            {
                name: "二级菜单2",
                id: 12
            }
        ]
    },
    {
        name: "一级菜单2",
        id: 2
    }
];

render(
    <Menu data={data}/>,
    document.getElementById('demo')
);

4、然后控制台报错了

Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `Menu`. See https://fb.me/react-warning-keys for more information.

我是想里面有递归到Menu,但是这个Menu的key要怎么用???

解决方案

key应该放在组件身上,大概是循环里直接是组件。但是你代码写的是循环的时候组件外层套了li,错误应该是这个。刚学不是特别清楚。

这篇关于react.js - react key的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆