React JSX:锚标记数组中的 href 路径引用循环中的最后一个路径

React JSX: href path inside an array of anchor tags is referencing the last path in a loop

我正在尝试生成一个锚标记数组,每个锚标记都具有不同的 href 值。我 运行 遇到一个问题,即每个锚标记的路径结果与 for 循环末尾的路径相同。我应该如何修改我的代码,以使路径不都引用循环中路径的最后一个值?

这是我的代码:

  function generateLinks(){
    let path = '/';
    let links = [ <a href={ path }>root</a> ];
    for (let link = 0; link < 5; link++){
      const partial =  "folder"+ link;
      path += partial + '/'
      links.push(<a href={ path }>{ partial }</a>);
    }
   return links;
 }

目前输出:

[<a href='/folder0/folder1/folder2/folder3/folder4/'>root</a>,<a href='/folder0/folder1/folder2/folder3/folder4/'>folder0</a>,<a href='/folder0/folder1/folder2/folder3/folder4/'>folder1</a>,<a href='/folder0/folder1/folder2/folder3/folder4/'>folder2</a>,<a href='/folder0/folder1/folder2/folder3/folder4/'>folder3</a>,<a href='/folder0/folder1/folder2/folder3/folder4/'>folder4</a>]

我想要的输出是:

[<a href='/'>root</a>,<a href='/folder0/'>folder0</a>,<a href='/folder0/folder1/'>folder1</a>,<a href='/folder0/folder1/folder2/'>folder2</a>,<a href='/folder0/folder1/folder2/folder3/'>folder3</a>,<a href='/folder0/folder1/folder2/folder3/folder4/'>folder4</a>]

您发布的代码工作正常。您的真实代码必须不同。这是一个 jsfiddle,显示它具有正确的 href 值:https://jsfiddle.net/8d2xLc9L/

 function generateLinks(){
    let path = '/';
    let links = [ <a href={ path }>root</a> ];
    for (let link = 0; link < 5; link++){
      const partial =  "folder"+ link;
      path += partial + '/'
      links.push(<a href={ path }>{ partial }</a>);
    }
   return links;
 }

 document.getElementById("container").textContent = JSON.stringify(generateLinks(), null, 2);

没错,你的逻辑很好!

也许你在 JSX 中循环数组的方式有问题?上面的作品对我有用:

import React, {Component} from 'react';

export default class MyApp extends Component {

  constructor(props){
    super(props);
  }

  generateLinks(){
    let path = '/';
    let links = [ <a href={ path }>root</a> ];
    for (let link = 0; link < 5; link++){
      const partial =  "folder"+ link;
      path += partial + '/'
      links.push(<a href={ path }>{ partial }</a>);
    }
    return links;
  }

  render(){
    return <div>{this.generateLinks()}</div>;
  }

}