reactjs 无法返回创建的函数[duplicate]

iaqfqrcu  于 2023-01-30  发布在  React
关注(0)|答案(2)|浏览(119)
    • 此问题在此处已有答案**:

(17个答案)
map function not working in React(3个答案)
昨天关门了。
我遇到了一个问题,我需要返回我在创建的foreach中调用的一些参数,但当我调用此函数时,它没有返回任何内容

import React, { useState, useEffect } from 'react';
/* Styles */
import styles from './styles.css'

export default function PalleteMeasurement(){
  const [click,setClick] = useState(false)
  const [data,setData] = useState([])

  const clickButton = () =>{
    setClick(!click)
  }

  useEffect(() => {
    fetch('/api/dataentities/SC/search?_where=categoryName=Sandalia&_fields=categoryName,size01,size02,size03,size22,size22e23,size23,size23e24,size24,size24e25,size25,size25e26,size26,size26e27,size27,size27e28,size28,size28e29,size29,size29e30,size30,size30e31,size31,size31e32,size32,size32e33,size33,size33e34,size34,size34e35,size35,size35e36,size36,size36e37,size37,size37e38,size38,size38e39,size39,size39e40,size40,size40e41,size41,sizeUN')
    .then((res) => res.json())
    .then((data) => {
      setData(data)
    })
    .catch((err) => {
      console.log('Dados não encontrados:',err)
      return false
    });

  }, [])

  const  dataMetricas = () => {
    let keys = Object.keys(data[0]).filter(value => value.includes('size'));

    return   keys.forEach(function (value) {
        if (data[0][value] != null) {
          const metricasCM = data[0][value]/10
          const textHead = value.replace('size','').replace('e', '/')
          {
          <div className={styles.box}>
              <div className={styles.tamanho}>
                <span>{textHead}</span>
              </div>
              <div className={styles.tamcm}>
                <span>{metricasCM} cm</span>
              </div>
          </div>
          }

        }
      })
  }
  return(
    <>
      <div className={styles.palletGuide}>
        <h5>Guia de tamanhos aproximados</h5>
        <div className={styles.buttonExtended} >
            <div className={styles.buttonImage} onClick={clickButton}></div>
        </div>
        {
          click ?
        <div className={styles.containerTamanhos}>
          <>
          {dataMetricas()}
          </>
        </div> 
        : null
        }

      </div>
    </>
  )
}

我不知道是否需要再给这个函数加一个参数,或者我调用错了,但是现在,我不知道它是什么你能帮帮我吗?

tgabmvqs

tgabmvqs1#

forEach不会返回任何您希望使用map的内容,如下所示:

const  dataMetricas = () => {
let keys = Object.keys(data[0]).filter(value => value.includes('size'));

    return keys.map(value => {
        if (data[0][value] != null) {
          const metricasCM = data[0][value]/10
          const textHead = value.replace('size','').replace('e', '/')
          return (
            <div className={styles.box}>
              <div className={styles.tamanho}>
                <span>{textHead}</span>
              </div>
              <div className={styles.tamcm}>
                <span>{metricasCM} cm</span>
              </div>
            </div>)
        }
      })
  }

如果有帮助就告诉我

rlcwz9us

rlcwz9us2#

forEach不返回一个新的数组,你需要使用Map函数来获得一个返回值,尝试这个并告诉我是否工作。更多信息请参见https://code.tutsplus.com/tutorials/javascript-map-vs-foreach-when-to-use-each-one--cms-38365

相关问题