首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: boxes.map不是一个函数

TypeError: boxes.map不是一个函数
EN

Stack Overflow用户
提问于 2022-09-23 14:28:08
回答 2查看 49关注 0票数 0

不知道我做错了什么,但是当我试图在我的应用程序中检测到一张脸时,我得到了下面的错误消息

我做错什么了?见下面的代码

导入反应从' React ';import‘./Faceognition.css’;

代码语言:javascript
复制
const FaceRecognition = ({ imageUrl, boxes }) => {
  return (
    <div className='center ma'>
      <div className='absolute mt2'>
        <img id='inputimage' alt='' src={imageUrl} width='500px' heigh='auto' />
        {boxes.map((box, i) => {
          return (
            <div
              key={i}
              className='bounding-box'
              style={{ top: box.topRow, right: box.rightCol, bottom: box.bottomRow, left: box.leftCol }}></div>
          );
        })}
      </div>
    </div>
  );
};

export default FaceRecognition;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-23 14:30:51

boxes可能不是数组。返回JSX之前的console.log(boxes),以查看实际的框是什么

票数 0
EN

Stack Overflow用户

发布于 2022-09-23 18:25:05

让我们看一下下面的示例:

代码语言:javascript
复制
const List = ({ items }) => {
  return (
    <div>{items.map(item => <p>{item}</p>)}</div>
  );
}

const Home = () => {
    [items, setItems] = useState();
    useEffect(() => {
        setItems(["first","second","etc"]);
    }, []);
    return (
        <div><List items={items} /></div>
    );
};

这将导致同样的错误,因为项在第一个实例中不是一个数组,它没有初始化:

代码语言:javascript
复制
[items, setItems] = useState();

在这种情况下,useState接收作为初始状态的参数。要修复此错误,应使用空数组初始化状态,以便使用map方法:

代码语言:javascript
复制
[items, setItems] = useState([]);

因此,在生命周期之后,它将呈现给出一个空数组的List组件,然后会触发map方法。您还可以通过在未定义对象或未传递支柱时提供默认param来修复此问题。

代码语言:javascript
复制
const List = ({ items = [] }) => {
  return (
    <div>{items.map(item => <p>{item}</p>)}</div>
  );
}

这样,即使您不传递项目支柱,它也会有一个空数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73829269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档