使用 React 把数组数据渲染为列表、表格

栏目: IOS · Android · 发布时间: 7年前

内容简介:对原作这里学习第一节,Array,即把数组数据渲染为列表、表格。通过数组渲染元素列表。

对原作 30-seconds-of-react 项目的中文化与学习,并对案例进行分析、运行和注释。 中文项目地址: 30-seconds-of-react-zh_CN-with-demo

这里学习第一节,Array,即把数组数据渲染为列表、表格。

DataList渲染为列表

通过数组渲染元素列表。

  • 使用 isOrdered prop 的值有条件地渲染 <ol><ul> 列表。
  • 使用 Array.prototype.mapdata 中的每个项目渲染为 <li> 元素,给它一个由其索引和值的串联产生的 key
  • 默认情况下,省略 isOrdered prop 以渲染 <ul> 列表。
function DataList({ isOrdered, data }) {
  const list = data.map((val, i) => <li key={`${i}_${val}`}>{val}</li>);
  return isOrdered ? <ol>{list}</ol> : <ul>{list}</ul>;
}
复制代码
例子
export default function() {
  const names = ['John', 'Paul', 'Mary'];
  return (
    <div>
      无序列表:
      <DataList data={names} />
      有序列表:
      <DataList data={names} isOrdered />
    </div>
  );
}
复制代码

ps:

DataTable渲染为表格

通过数组渲染表格,动态创建每一行。

*渲染一个带有两列( IDValue )的 <table> 元素。 *使用 Array.prototype.mapdata 中的每个项目渲染为 <tr> 元素,由其索引和值组成,给它一个由两者串联产生的 key

function DataTable({ data }) {
  return (
    <table>
      <thead>
        <tr>
          <th>ID</th>
          <th>Value</th>
        </tr>
      </thead>
      <tbody>
        {data.map((val, i) => (
          <tr key={`${i}_${val}`}>
            <td>{i}</td>
            <td>{val}</td>
          </tr>
        ))}
      </tbody>
    </table>
  );
}
复制代码
例子
export default function() {
  const people = ['John', 'Jesse'];
  return <DataTable data={people} />;
}
复制代码

ps:

MappedTable渲染为映射表格

通过对象数组渲染表格,属性名称与列对应,动态创建每一行。

  • 使用 Object.keys()Array.prototype.filter()Array.prototype.includes()Array.prototype.reduce() 生成一个 filteredData 数组,包含所有对象 使用 propertyNames 中指定的键。
  • 渲染一个 <table> 元素,其中一组列等于 propertyNames 中的值。
  • 使用 Array.prototype.mappropertyNames 数组中的每个值渲染为 <th> 元素。
  • 使用 Array.prototype.mapfilteredData 数组中的每个对象渲染为 <tr> 元素,对象中的每个键包含一个 <td>
function MappedTable({ data, propertyNames }) {
  let filteredData = data.map(v =>
    Object.keys(v)
      .filter(k => propertyNames.includes(k))
      // 迭代为 acc 对象赋值:
      // 回调函数为 (acc, key) => ((acc[key] = v[key]), acc) 初始值为 {}
      // ((操作), 返回值) 语法解读:括号里进行任意操作,并指定返回值
      .reduce(( acc, key) => ((acc[key] = v[key]), acc), {}),
  );
  return (
    <table>
      <thead>
        <tr>
          {propertyNames.map(val => (
            <th key={`h_${val}`}>{val}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {filteredData.map((val, i) => (
          <tr key={`i_${i}`}>
            {propertyNames.map(p => (
              <td key={`i_${i}_${p}`}>{val[p]}</td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
}
复制代码

Notes

此组件不适用于嵌套对象,如果在 propertyNames 中指定的任何属性中有嵌套对象,则会中断。

例子
export default function() {
  const people = [
    { name: 'John', surname: 'Smith', age: 42 },
    { name: 'Adam', surname: 'Smith', gender: 'male' },
  ];
  const propertyNames = ['name', 'surname', 'age'];
  return <MappedTable data={people} propertyNames={propertyNames} />;
}
复制代码

ps:


以上所述就是小编给大家介绍的《使用 React 把数组数据渲染为列表、表格》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web标准和SEO应用实践

Web标准和SEO应用实践

Aarron Walter / 李清 / 机械工业出版社 / 2008 / 36.00元

本书是关于搜索引擎优化和易发现性的技术指南。. 本书介绍Web标准、可访问性以及Ajax、API、Flash和微格式等内容,包括标记策略、服务器端策略、内容策略、建构易发现的博客、在网站内添加搜索、防止易发现性障碍、用邮件列表挽回流量、将易发现性付诸实践。 本书适合网站开发者与SEO技术业余爱好者等参考。 这不是为营销专家写的一本SEO的书。 针对那些想要找到网站的目标用户......一起来看看 《Web标准和SEO应用实践》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具