React-Native ListView renderRow发出传递道具。 正确的方式或错误的方式

在React-Native中使用ListView,我看到不一样,将props移动到列表项,

  1. 仅使用引用将函数作为props传递,并调用子组件中的参数,或

  2. 将函数作为带有参数定义的props传递,并调用子函数中没有参数的函数

没有一个解决方案有效。

调用的函数是Redux的Actions创建者,并被调度。 这是Redux还是React-Native(也许是ReactJS)的问题

这是一个片段,市场为//错误的代码行无效后跟好的代码行

class App extends Component { // On props // data: an Array // doThis: an action creator of Redux // doThat: idem constructor(){ super(); this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); } render () { const dataSource = this.ds.cloneWithRows(this.props.data); return (    this.props.doThis(rowData)} onLongPress={() => this.props.doThat(rowData)} /> } />  ) } } class Item extends Component { render() { return (   { this.props.onPress( this.props.rowData ) }} //onLongPress={() => { this.props.onLongPress( this.props.rowData ) }} //WRONG TOO onPress={this.props.onPress} onLongPress={this.props.onLongPress} >  {rowData}    ); } } 

这里有一个回答这个问题https://github.com/srlopez/test先谢谢

    如果你的高级回调接受一个参数,你需要确保你的匿名函数也接受一个参数(注意:使用箭头语法创建匿名函数会自动将我们的函数绑定到当前上下文中的值)。 我认为您目睹了一系列问题,其中您的回调被绑定到不正确的上下文(窗口),或者您不接受传递的参数:

     class App extends Component { // On props // data: an Array // doThis: an action creator of Redux // doThat: idem constructor(){ super(); this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); } render () { const dataSource = this.ds.cloneWithRows(this.props.data); return (    this.props.doThis(data)} onLongPress={(data) => this.props.doThat(data)} /> }/>  ) } } class Item extends Component { render() { return (   this.props.onPress(this.rowData)} onLongPress={() => this.props.onLongPress(this.rowData)}>  {rowData}    ); } } 

    这可能是一个问题,你的关闭没有正确设置。

    尝试以这种方式绑定它:

     class Item extends Component { render() { return (    {rowData}    ); } }