react子组件怎么传值给父组件 react怎么判断state里面是一个数组?

[更新]
·
·
分类:互联网
2209 阅读

react子组件怎么传值给父组件

react怎么判断state里面是一个数组?

react怎么判断state里面是一个数组?

方法一: 使用instanceof方法
instanceof 用于判断一个变量是否某个对象的实例,左边操作数是一个对象,右边操作数是一个函数对象或者函数构造器。原理是通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。
a instanceof balert(true):alert(false) //注意b值是你想要判断的那种数据类型,不是一个字符串,比如Array。
举一个例子:
var arr[];
console.log(arr instanceof Array) //返回true
方法二: 使用constructor方法
在W3C定义中的定义:constructor 属性返回对创建此对象的数组函数的引用,就是返回对象相对应的构造函数。从定义上来说跟instanceof不太一致,但效果都是一样的。
那么判断各种类型的方法:
console.log([].constructor Array); //true
console.log({}.constructor Object); //true
console.log( String); //true
console.log((123).constructor Number); //true
console.log( Boolean); //true
注意:
使用instaceof和construcor,被判断的array必须是在当前页面声明的!比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个array,并将其赋值给父页面的一个变量,这时判断该变量,Array ;会返回false;
原因:
1、array属于引用型数据,在传递过程中,仅仅是引用地址的传递。
2、每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的array,所对应的构造函数,是子页面的Array对象;父页面来进行判断,使用的Array并不等于子页面的Array。
方法三: 使用(arr) [object Array]方法
function isArray(o) {
  return (o);
}
var arr[2,5,6,8];
var obj{name:zhangsan,age:25};
var fn function () {}
console.log(isArray(arr)); //[object Array]
console.log(isArray(obj)); //[object Object]
console.log(isArray(fn)); //[object function]
方法四:ES5定义了
([]) //true

用React写函数组件,如何避免重复渲染?

雇佣国外高级程序员,或自己有真本事。