首页 > 解决方案 > 作为数组传递的道具在 Reactjs 的子组件中作为对象类型获取

问题描述

在我的 ReactJS 应用程序中,我ParentComponent通过将一些传递props给它来调用子组件

<ChildComponent val={["a1"]} sets={{}} />

在我的内部,我ChildComponent给了一些控制台来检查正在接收并找到的道具

const ChildComponent = ({val, sets}) => {
    console.log("val", typeof(val))
    console.log("sets", typeof(sets))
    return <p> Hello </p>
}

但是在控制台中我得到了

val object
sets object

为什么我在检查类型时将数组作为道具传递为对象?

标签: reactjs

解决方案


因为在表面之下阵列是对象(连线正确),即如果你console.log(typeof [])将是object

所以有用的检查是:

var isArr = val instanceof Array;
var isArr = Array.isArray(val);

但最可靠的方法是:

const isArray = Object.prototype.toString.call(val) == '[object Array]';

推荐阅读