React-Native基于父道具更新ListView数据源

时间:2015-12-10 18:40:55

标签: javascript react-native

我正在开发一个包含以下类的应用程序:

<Details creature={this.state.creature} />

当类更新其状态时,它会更新creature Details道具。发生这种情况时,我希望Details使用新生物prop来使用CREATURES[this.props.creature].food作为新的DataSource刷新ListView。

以下代码最初有效,但我无法弄清楚如何更新其dataSource:

var Details = React.createClass({
  getInitialState: function(){
    var ds = new ListView.DataSource({
            rowHasChanged: (row1, row2) => row1 !== row2,
        });
    var cr = CREATURES[this.props.creature];
    var rows = cr.food;
    ds = ds.cloneWithRows(rows);
        return {
        dataSource:ds,
    };
    },
  renderRow: function(rowData){  
    return (
      <View>
         <Text>{rowData}</Text>
      </View>
    );
  },
  render: function(){
    return (
            <ListView
                    ref="listview"
                    dataSource={this.state.dataSource}
                    renderRow={this.renderRow}
                    automaticallyAdjustContentInsets={false}
                    keyboardDismissMode="on-drag"
                    keyboardShouldPersistTaps={true}
                    showsVerticalScrollIndicator={true}/>
    );
    }
});

另外,我是新手,所以我可能会以完全错误的方式做这件事。

1 个答案:

答案 0 :(得分:4)

您将使用componentWillReceiveProps传递更新道具并使用列表视图的更新数据源更新您的状态。

像(未经测试)的东西:

**********
*        *
*        *
*        *
*        *
*        *
*        *
*        *
*        *
**********