【问题标题】:React: Return last child object from nested props反应:从嵌套道具返回最后一个子对象
【发布时间】:2016-07-12 20:22:25
【问题描述】:

我在 object 中的 object 中的 object 中有一个 key-pair 对象。 I Object.assign 中间层,所以新对象是对象中的对象。

我将这个新对象作为道具发送。

我可以 console.log 新的父和子并查看对象,但尝试 console.log 最后一个子返回

未捕获的类型错误:无法读取未定义的属性“子”。

瓦关?

obj:
    {
    Something: Null,
    Grandparent: {
        SomethinElse: Null,
        Parent: {
            SomethingMore: Null,
            Child: {
                SomeValue: "Duck"
            }
        }
    }

newObj:
    Child: {
        SomeValue: "Duck"
    }

然后我设置

this.state.cow: newObj

然后我发送到一个组件并调用

{console.log(this.props.cow)}

对象:{SomeValue: "Duck"}

很好。然后我要么记录要么渲染

{console.log(this.props.cow.SomeValue)}

未捕获的类型错误:无法读取未定义的属性“SomeValue”

非常感谢您对这个相当基本的问题的理解。

export default class AwsReadFunction extends React.Component {

  constructor(){
    super();
    this.state={
      main: {},
      info: {},
      cows: {}
   };
  } //constructor END

  componentDidMount() {
    var docClient = new AWS.DynamoDB.DocumentClient()
    var table = "Movies";
    var year = 1944;
    var title = "Lifeboat";
    var params = {
      TableName: table,
      Key:{
        "year": year,
        "title": title
      }
    };

    docClient.get(params, (err, data) => {
      if(err){
        console.log(JSON.stringify(err));
      } else {
        var ca = Object.assign({}, data.Item.info.cows);
        this.setState({
          main: data.Item,
          info: null,
          cows: ca
        });
      }
    });

  render(){
    return (
      <div>
        <List main={this.state.main} cows={this.state.cows} />
      </div>
    )
  }
}
export default class List extends React.Component {
  render(){
    return (
      <div>
      List cows-fish: {this.props.cows.fish} <br />
      </div>
    )
  }
}

【问题讨论】:

  • 请将代码的相关部分发布到您解释的执行此操作的位置,截至目前,无法判断错误在哪里。
  • 这种店以后会害死你的..
  • 你为什么不使用 Redux
  • A) 将在 home 时加载代码,b) 加载带有最终计划的嵌套 db 对象 c) 使用 redux,但想先了解有关 react 的更多信息
  • 显示你的一些代码

标签: javascript object reactjs


【解决方案1】:

我认为您的代码背后的逻辑没有任何问题。如果我赌钱,我猜这是某个地方的错字。以下是我注意到的一些不一致之处:

  • 在您的示例对象中,Child 有一个大写 C,而在错误消息中它是小写的

  • 您似乎在 AwsReadFunction 中缺少右花括号,就在 render 方法声明之前。

  • 你在一些地方使用cow,然后在其他地方使用cows

这显然只是一个猜测,但仔细检查不会有什么坏处:)

【讨论】:

  • 你知道吗,我有点惭愧。不是代码。我的 watchify 停止更新。我重新启动了服务并bam。有用。我会接受你的回答,因为它让我再次审视了基础知识。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
相关资源
最近更新 更多