listState({ds})之后listview消失了

时间:2016-08-11 14:18:43

标签: ios listview react-native

我对listview的重新渲染机制感到困惑。

Page 1已经生成了包含两个项目的列表视图,然后单击“添加”按钮,导航到另一个页面,并向页面1的数据源添加一个项目,然后向后添加导航器。

我期望看到的是第1页有三个项目,但实际上是Page 2,listview消失了。但如果我用鼠标/手指触摸它,listView会再次出现三个项目。 我在我的iphone和模拟器上测试了它

第1页的源代码:

class Market extends Component {
  constructor(props) {
  super(props)
  this.state = {
    dataSource: new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }),
  }
}

componentDidMount() {
  this.refreshListView(this.props.data)
}

componentWillReceiveProps(nextProps) {
  this.refreshListView(nextProps.data)
} 

refreshListView() {
  this.setState({
    dataSource: this.state.dataSource.cloneWithRows(data)
  })
}

render() {
  return (
    <ListView
      dataSource={this.state.dataSource}
      renderRow={this._renderRow}
      refreshControl={
        <RefreshControl/>
      }
    />
  )
}

const mapStateToProps = createSelector(
  selectData(),
  (data) => ({
    data,
  })
)

export default connect(mapStateToProps)(Market)

1 个答案:

答案 0 :(得分:1)

刚刚找到了固定我的东西!尝试将removeClippedSubviews={false}添加到您的ListView

https://github.com/facebook/react-native/issues/8607#issuecomment-231371923