Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应-以匹配的排序顺序呈现子级?_Javascript_Reactjs - Fatal编程技术网

Javascript 反应-以匹配的排序顺序呈现子级?

Javascript 反应-以匹配的排序顺序呈现子级?,javascript,reactjs,Javascript,Reactjs,给定渲染其子级的组件,我无法使子级按照其newOrder顺序进行排序: export default class EnhancedLinks extends React.Component { render() { return ( <div> {React.Children.map( this.props.children.filter((c) => c), (el) => el

给定渲染其子级的组件,我无法使子级按照其
newOrder
顺序进行排序:

export default class EnhancedLinks extends React.Component {
  render() {
    return (
      <div>
        {React.Children.map(
          this.props.children.filter((c) => c),
          (el) => el
        )}
      </div>
    );
  }
}

export default class App extends React.Component {
  render() {
    const newOrder = ["dandelion", "cantaloupe", "apple", "banana"];

    return (
      <div>
        <EnhancedLinks>
          <div name="apple" color="red">apple</div>
          <div name="banana" color="yellow">banana</div>
          <div name="cantaloupe" color="orange">cantaloupe</div>
          <div name="dandelion" color="green">dandelion</div>
        </EnhancedLinks>
      </div>
    );
  }
}
导出默认类增强链接扩展React.Component{
render(){
返回(
{React.Children.map(
this.props.children.filter((c)=>c),
(el)=>el
)}
);
}
}
导出默认类App扩展React.Component{
render(){
const newOrder=[“蒲公英”、“哈密瓜”、“苹果”、“香蕉”];
返回(
苹果
香蕉
哈密瓜
蒲公英
);
}
}
知道如何让
增强链接
子级按照
新顺序
数组的顺序进行渲染吗

这是一把小提琴:
newOrder
数组映射到
s,而不是单独写出它们

    const colors = ['red', 'yellow', 'orange', 'green'];
    return (
      <div>
      <EnhancedLinks>
        {newOrder.map((name, i) => <div name={name} color={colors[i]}>{name}</div>)}
      </EnhancedLinks>
      </div>
    );
const colors=[“红色”、“黄色”、“橙色”、“绿色”];
返回(
{newOrder.map((名称,i)=>{name})
);

newOrder
数组映射到
s,而不是单独写出它们

    const colors = ['red', 'yellow', 'orange', 'green'];
    return (
      <div>
      <EnhancedLinks>
        {newOrder.map((name, i) => <div name={name} color={colors[i]}>{name}</div>)}
      </EnhancedLinks>
      </div>
    );
const colors=[“红色”、“黄色”、“橙色”、“绿色”];
返回(
{newOrder.map((名称,i)=>{name})
);

EnchancedLinks组件应该呈现div、颜色和文本,而不是外部包装组件。这样一来,复制/粘贴的代码就更少了,您可以在数组中设置顺序,或者根据需要操纵数组

export default class EnhancedLinks extends React.Component {
  render() {
    return (
      <div name={this.props.name} color={this.props.color}>
        {this.props.name}
      </div>
    );
  }
}

export default class App extends React.Component {
  render() {
    const newOrder = [
      {
        name: "dandelion",
        color: "green"
      },
      {
        name: "cantaloupe",
        color: "orange"
      },
      {
        name: "apple",
        color: "red"
      },
      {
        name: "banana",
        color: "yellow"
      }];

    return (
      <div>
        {newOrder.map((link) => {
          return <EnhancedLinks {...link} />
        })}
      </div>
    );
  }
}

导出默认类增强链接扩展React.Component{
render(){
返回(
{this.props.name}
);
}
}
导出默认类App扩展React.Component{
render(){
常数newOrder=[
{
名称:“蒲公英”,
颜色:“绿色”
},
{
名称:“哈密瓜”,
颜色:“橙色”
},
{
名称:“苹果”,
颜色:“红色”
},
{
名称:“香蕉”,
颜色:“黄色”
}];
返回(
{newOrder.map((链接)=>{
返回
})}
);
}
}

我已经为您提出了一个解决方案:

您的EnchancedLinks组件应该呈现div、颜色和文本,而不是外部包装组件。这样一来,复制/粘贴的代码就更少了,您可以在数组中设置顺序,或者根据需要操纵数组

export default class EnhancedLinks extends React.Component {
  render() {
    return (
      <div name={this.props.name} color={this.props.color}>
        {this.props.name}
      </div>
    );
  }
}

export default class App extends React.Component {
  render() {
    const newOrder = [
      {
        name: "dandelion",
        color: "green"
      },
      {
        name: "cantaloupe",
        color: "orange"
      },
      {
        name: "apple",
        color: "red"
      },
      {
        name: "banana",
        color: "yellow"
      }];

    return (
      <div>
        {newOrder.map((link) => {
          return <EnhancedLinks {...link} />
        })}
      </div>
    );
  }
}

导出默认类增强链接扩展React.Component{
render(){
返回(
{this.props.name}
);
}
}
导出默认类App扩展React.Component{
render(){
常数newOrder=[
{
名称:“蒲公英”,
颜色:“绿色”
},
{
名称:“哈密瓜”,
颜色:“橙色”
},
{
名称:“苹果”,
颜色:“红色”
},
{
名称:“香蕉”,
颜色:“黄色”
}];
返回(
{newOrder.map((链接)=>{
返回
})}
);
}
}
我给你提出了一个解决方案: