zoukankan      html  css  js  c++  java
  • React学习:列表&&Key

    在React中,把数组转化为元素,和js的map方法类似,返回一个数组类的元素

    1.渲染多个组件

    可以使用{}在jsx中构建一个元素集合

    const number = [1, 2, 3, 4, 5, 6];
    const listItem = number.map((item)=>{
        return <li>{item}</li>
    })
    ReactDOM.render( <ul>{listItem} </ul>,document.getElementById('root'))

    2.基础组件列表

    通常你需要在组件中去渲染一个列表,而不是构建一个元素集合,此时可以把上述构建抽离为一个组件。

    // 列表 && Key,渲染为组件去使用
    const number = [1, 2, 3, 4, 5, 6];
    function NumberList(props){
        const listItem = props.numbers.map((item)=>
            <li>{item}</li>
        )
        return (
            <ul>{listItem}</ul>
        )
    }
    ReactDOM.render( <NumberList numbers={number} />, document.getElementById('root'))

    此时运行会报没有key的警告,需要进行key的添加(跟Vue一样 key为循环的标识),以下会介绍key

    const listItem = props.numbers.map((item,index)=>
         <li key={index}>{item}</li>
    )

    3.关于key

    1.key帮助React进行标识什么元素更改了(新增/删除),因此需要给数组中的每一个元素进行key的添加。

    2.key作为元素的标识 是必须且唯一的,一般我们会使用id来进行标识,如果没有其他可以进行标识的时候,也允许使用index,但是此时需要注意,

    如果列表项目的顺序可能会变化,不建议使用索引来用作 key 值,因为这样做会导致性能变差,还可能引起组件状态的问题。

    3.在react中,不需要全局的key唯一,只需要确定兄弟节点的key是唯一的即可。

    4.key只会传递给react,而不会去传递给子组件,如果子组件也需要父组件的key的信息,需要用其他属性名传递

    5.在jsx中也可以进行嵌套map(),但是这种风格不能滥用,会造成代码不清晰。如果map()嵌套过多,需要考虑提取组件

    function NumberList(props) {
      const numbers = props.numbers;
      return (
        <ul>
          {numbers.map((number) =>
            <ListItem key={number.toString()}
                      value={number} />
    
          )}
        </ul>
      );
    }
  • 相关阅读:
    AC自动机【学习笔记】
    SCOI2016 背单词【Trie树,贪心】
    【字符串算法】字典树Trie入门
    USACO 1.3 Name That Number【暴搜】
    MapReduce分组
    MapReduce排序
    博客园添加访问人数统计
    MapReduce的分区
    MapReduce的计数器
    MapReduce部分源码解读(一)
  • 原文地址:https://www.cnblogs.com/liyaping/p/11586462.html
Copyright © 2011-2022 走看看