【问题标题】:React- FLUX - Pass Object as Param - UndefinedReact- FLUX - 将对象作为参数传递 - 未定义
【发布时间】:2017-06-15 13:27:24
【问题描述】:

我有一个简单的 react 应用程序,我从 web api 获取联系人列表,我想显示它们。每个联系人都有姓名、姓氏、电话等 我的应用程序类获取联系人然后呈现为 ​​

render(){
var contact= this.state.contacts[0];
 return( <div><Contact label='First Contact' person={contact}/></div>
)
}

然后在我的联系人类中

render(){
return(
<div> {this.props.label} : {this.props.person.Name}</div>)
}

当我在 chrome 上调试时,我看到那个人作为道具传递,对象具有所有参数,但是当我运行代码时,在 {this.props.person.Name} 上出现错误

Cannot read property Name of undefined

如果我删除它,{this.props.label} 会毫无问题地显示。所以我可以将文本作为道具传递,但不能作为对象传递。 有什么想法吗?

  • 编辑:我也可以将 Name 属性传递为 联系人姓名= {contact.Name}/> 这有效,但不能将联系人作为对象传递,然后在
  • 的渲染中读取属性

【问题讨论】:

    标签: javascript .net reactjs


    【解决方案1】:

    我的猜测是(因为您使用的是flux)在加载页面(初始加载)时,您所在州的联系人代表一个空数组。

    试试

    var contact= this.state.contacts[0] || {};
    

    对于一些好的提示 => 不要使用 vars,使用 const :-)

    让您的组件监听您的通量存储:

    确保您的通量存储拥有一个 addChangeListener 和 removeChangeListener 函数,您可以在组件中调用它们,以便您的组件自动更新

    componentDidMount(){
      myStore.addChangeListener(this._onChange);
    }
    
    componentWillUnmount(){
      myStore.removeChangeListener(this._onChange);
    }
    
    _onChange = () => {
      this.setState({contacts: myStore.getContacts()});
    }
    

    【讨论】:

    • 谢谢,我有你提到的代码位,但是父级的状态不为空,我可以做警报(this.state.documents.length)
    • 我只是跟着 ' 一些好的提示 => 不要使用 vars,使用 const :-)' 并且成功了!显然,如果我将对象定义为 var 并作为 prop 传递,我无法转到子组件中 Json 对象的属性,但如果我将对象定义为 const,没问题。谢谢
    猜你喜欢
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2012-07-13
    • 2023-04-02
    相关资源
    最近更新 更多