为什么我在reactJs的console.log中未定义

时间:2017-04-05 06:38:51

标签: javascript reactjs properties

我已将对象发送到属性

objValue = {
    key1 = 'value1',
    key2 = ['a','b','c','d','e'],
}
<childComponent objValue = {objValue} />

然后在我的孩子我试图访问财产

class ....{
    const {obj} = this.props.objValue,
    console.log({obj.key2})
}

我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

问题出在这一行:

const {obj} = this.props.obj;

像这样写:

const {objValue} = this.props;

原因是您使用密钥object传递了props中的objValue,因此您需要使用this.props.objValue.key或将其解构为:

const {objValue} = this.props;

现在您可以使用objValue.key2它将打印正确的值。

props将是这样的:

{
   objValue: {
      key1 : 'value1',
      key2 : ['a','b','c','d','e'],
   }
   .....
}

查看DOC以获取有关Object destructuring

的更多信息

几点变化:

1 反应组件的名称必须以大写字母开头,否则将被视为html元素而不是反应组件,因此请使用ChildComponent代替childComponent。< / p>

2 您在=内使用object来指定值,使用:代替。

检查此示例:

&#13;
&#13;
var a = {a:1, b:2, c:3};

var {b} = a;

console.log(b);

console.log({b});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

看看你的语法,你在对象中使用=,而不是:和Mayank对,组件的名称应该以大写字母开头。

答案 2 :(得分:0)

谢谢大家,我实际上在基础对象定义中找到了拼写错误,现在它正在运行。