遍历数组,我们通常使用map方法

  1. // 在实际开发中,如果数据涉及到增删改查了,key值我们通常使用业务id,而不是使用数组下标
  2. import React from 'react';
  3. class App extends React.Component {
  4. render() {
  5. let arr = ['a', 'b', 'c', 'd'];
  6. return (
  7. <ul>
  8. {
  9. arr.map((item, index) => {
  10. return <li key={index}>{item}</li>
  11. })
  12. }
  13. </ul>
  14. )
  15. }
  16. }

遍历对象,两种方法(for…in循环做成自运行函数、Object.entries(obj)将对象转换成数组再使用map方法)

  1. // for 循环只是流程控制语句,而非表达式,也就是for循环运算完也不会有结果。
  2. // 那怎么把 for循环做成一个表达式呢,这样才会有结果
  3. // 做成自运行函数就可以了
  4. class App extends React.Component {
  5. render() {
  6. let obj = {
  7. a: 1,
  8. b: 2,
  9. c: 3
  10. }
  11. return (
  12. <ul>
  13. {
  14. // for(const key in obj) {
  15. // if(obj.hasOwnProperty(key)) {
  16. // const value = obj[key];
  17. // }
  18. // }
  19. (() => {
  20. let domArr = [];
  21. for(const key in obj) {
  22. if(obj.hasOwnProperty(key)) {
  23. const value = obj[key]
  24. domArr.push(<li key={key}>{value}</li>)
  25. }
  26. }
  27. return domArr;
  28. })()
  29. }
  30. </ul>
  31. )
  32. }
  33. }
  34. // Object.entries() 把对象转换成数组
  35. class App extends React.Component {
  36. render() {
  37. let obj = {
  38. a: 1,
  39. b: 2,
  40. c: 3
  41. }
  42. return (
  43. <ul>
  44. {
  45. Object.entries(obj).map(([key, value], index) => {// item是一个小数组,把item解构,写法是[key, value]
  46. return <li key={key}>{value}</li>
  47. })
  48. }
  49. </ul>
  50. )
  51. }
  52. }

遍历字符串(将字符串转换成数组再使用map方法)

  1. class App extends React.Component {
  2. render() {
  3. let str = 'hello world'
  4. return (
  5. <ul>
  6. {
  7. str.split('').map((item, index) => {
  8. return <li key={index}>{item}</li>
  9. })
  10. }
  11. </ul>
  12. )
  13. }
  14. }

遍历数字(将数字也转换成数组再使用map方法)

  1. class App extends React.Component {
  2. render() {
  3. let num = 5;
  4. return (
  5. <ul>
  6. {
  7. new Array(num).fill('').map((item, index) => {
  8. <li key={index}>{item}</li>
  9. })
  10. }
  11. </ul>
  12. )
  13. }
  14. }

结论

综上可知,react当中,数据的遍历,不论是对象还是字符串或者其他的数据结构都是先转换为数组,再使用map循环去遍历。