【问题标题】:Array not mapping数组未映射
【发布时间】:2020-06-08 03:25:36
【问题描述】:

我有一个数组,想显示每个项目。但地图功能不起作用。

export default function SearchField() {

const renderResults = () => {
  console.log('array: ', array); // array is consoled
  return array.map(element => {
    console.log('element', element); // nothing is consoled
    return true;
  });
};

  return (
    <div>{renderResults()}</div>
  );
}

这是我的数组。它正在被安慰。但它的元素不是映射和安慰。

【问题讨论】:

  • 您需要在 renderResults() 函数中使用 return 语句。
  • 你在 renderResults 函数中写了 return 和花括号
  • 有这个return语句:return (
    {item.title}
    );
  • @vytaute 位于 .map 回调中,不会从 renderResults 函数返回
  • @vytaute 这个返回语句在你的 searchResult.map() 语句中,所以这不会为这个函数做预期的返回。你应该把 return 放在 searchResult.map() 之前。

标签: javascript reactjs foreach mapping react-boilerplate


【解决方案1】:
export default function SearchField() {
  const [searchResult, setSearchResult] = useState([]);

  const handleSearch = e => {
    setSearchResult(search.elementsFound(e.target.value));
  };

  const renderResults = () => {
      console.log('searchResult', searchResult); // searchResult array is fine here

      // does not work
      searchResult.forEach(element => {
        console.log('element', element);
      });

      // also does not work
      return searchResult.map(item => {
        console.log('res', searchResult);

         return (
          <div>{item.title}</div>
         );
     });
  }

  return (
    <div>
      <input placeholder="search..." onInput={handleSearch} />
      {renderResults()}
    </div>
  );
}

您需要从.map 返回结果。

【讨论】:

    【解决方案2】:

    只有你忘了加大括号

      const renderResults = () => {
      console.log('searchResult', searchResult); // searchResult array is fine here
    
      searchResult.forEach(element => {
        console.log('element', element);
      });
    
      searchResult.map(item => {
        console.log('res', searchResult);
    
       return (
         <div>{item.title}</div>
        );
       });
     }
    

    【讨论】:

      【解决方案3】:

      ¿你确定它正在被安慰吗?因为数组没有登录控制台

      【讨论】:

      • 好吧,我确定。我添加了一张图片顺便说一句。我在程序的早期设置了我的数组,我只是不想添加不必要的信息来提问。但关键是数组得到了安慰(如图所示),但它的元素没有。很奇怪,对吧?
      • Jm 但实际上在图片中它看起来你调用了变量但没有得到安慰,因为控制台必须说“array:”也是因为你写了这个 console.log('array: ', array);
      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 2023-01-14
      • 1970-01-01
      • 2016-05-21
      • 2022-10-06
      • 2021-04-09
      • 2012-01-04
      • 2017-12-26
      相关资源
      最近更新 更多