关于evaluating this.props.navigation.navigate



  • 我在做一个联系人列表的时候碰到了跳转时显示 undefined is not an object (this.props.navigation.navigate) ,之前也出现过这种问题,然后我将跳转函数的作用域绑定到构造函数就解决,而这次的情况有一些不同,我写了一个组件Option,里面没有具体实现跳转函数,只是写了“this.props.handleClick”,因为我想到父组件处理它,我的父组件是一个SectionList,在renderItem里面调用了Option组件,然后就出现了我上述的问题,我试了将跳转函数写死在子组件Option里面,但是发现也是出现了这个错误

    子组件代码0_1541761351422_B$M$GXKXZW$J29OJQ77TP(A.png
    0_1541761421834_E~3JV6O{G6S@_)21G}XXRBD.png

    父组件代码

    0_1541761513487_8`S7_OTZIPV6XKD$~8PVSK0.png

    0_1541761593520_P78WD3GOMKI{I01T$UEYJ7N.png

    以上就是部分代码,我将Option组件放在renderItem之外是不会有什么问题的,问题就在当放进里面之后就出错了,请问该怎么修改,谢谢~~



  • 如果将Options组件中的handleClick改成这样:
    handleClick={() = > alert(1) }
    也可以运行看到结果,但是如果改成
    1. handleClick={this._toFriendDetailInfo};
    2._toFriendDetailInfo(){
    alert(1)
    }
    3.在构造函数里绑定_toFriendDetailInfo
    这样反而运行不了



  • @xusichao

    父的 renderItem 没有绑定this,也就是没把this传进子控件

    要么 renderItem={this._renderItem.bind(this)} //ES5
    要么 renderItem={()=>this._renderItem()} //ES6



  • @12343954 终于解决了问题,谢谢!!