0

我有一个定义如下所示的组件。creativeList包含我有兴趣显示的值。它包含以下内容:

creativeList = [{keyID: "AC072", cost: 1461, people: 520, cpp: "2.81"}, 
{keyID: "AC098", cost: 1600, people: 470, cpp: "3.4"}]

我希望能够keyID通过在我的组件中返回它来显示它。我可以通过登录控制台来获取该值,但是,我无法返回它。有人可以帮我吗?

function DisplayList(props) {
    const creativeList = props.creativeList

    function ret(){
        creativeList.forEach(function(item){
            const i = item[0]

            console.log(i.keyID)

            return (
                <li>{i.keyID}</li>
            );
        })
    }

    return (
        <div>
            <li>List:</li>
            {ret()}
        </div>
    );
}

export default DisplayList;
4

4 回答 4

3

在 forEach 语句之前添加一个 return 语句并用 map 替换 forEach

与 forEach 不同,map 返回其回调参数返回的元素数组。

forEach 返回未定义,这就是您的列表未打印的原因。

function ret(){
        return creativeList.map(function(item){

            console.log(item.keyID)

            return (
                <li>{item.keyID}</li>
            );
        })
    }
于 2020-02-08T06:35:21.513 回答
2

尝试这个。你错过了返回一个组件,当然你应该使用 map 而不是 foreach

import React from "react";

function DisplayList(props) {
  const creativeList = props.creativeList;


  function ret() {
    return creativeList.map(function(item) {
      const i = item;

      console.log(i.keyID);

      return <li>{i.keyID}</li>;
    });
  }

  return (
    <div>
      <li>List:</li>
      {ret()}
    </div>
  );
}

export default DisplayList;
于 2020-02-08T06:43:18.757 回答
1

您可以简化使用map. 还将属性添加key到列表中的每个元素。

function DisplayList(props) {
  const { creativeList = [] } = props.creativeList;
  return (
    <div>
      <div>List:</div>
      {creativeList.map(({ keyID }) => (
        <li key={keyID}>{keyID}</li>
      ))}
    </div>
  );
}
export default DisplayList;
于 2020-02-08T09:49:02.720 回答
1

没有办法停止forEach,如果你想做return,forEach返回undefined,改用map。工作示例:沙箱

于 2020-02-08T06:48:44.550 回答