react-native - Realm 数据更改时如何更新 React Native ListView

标签 react-native realm

我有一个存储在 Realm DB 中的“事件”对象列表,这些对象显示在 ListView 上。
最初加载数据并将其显示在屏幕上没有问题。但是,当数据更新(在另一个屏幕中,我们称之为“详细编辑屏幕”)并且用户返回到列表屏幕时,列表不会更新。

我试图在渲染方法中设置状态,但返回一个空白屏幕。

    var activities = realm.objects('Activity').sorted('date');
    let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); 
    ...
    module.exports = React.createClass({
      getInitialState: function(){
        return { 
          dataSource: ds.cloneWithRows(activities),
        };
      },
    ...
    render: function(){
       //update the list of activities
        activities = realm.objects('Activity').sorted('date'); 
        this.setState({dataSource: ds.cloneWithRows(activities)});
         return ( 
          <View>
              {(!activities || activities.length<1) && noActivitiesMessage}
                  <ListView style={styles.listStyle} dataSource={this.state.dataSource} 
            renderRow={this._renderRow} />
    </View>

)
...
}

最佳答案

我和你有同样的问题。我的问题是通过使用 Realm ListView 解决的。我像这样使用它

import { ListView } from 'realm/react-native';

class List extends Component {

  constructor(props) {
    super(props);
  }

  componentDidMount() {
    src = realm.objects('MyObject');
    this.setState({
      dataSource:this.state.dataSource.cloneWithRows(src),
      data:src
    });
  } 

  updateData(){
   // update or add object in Realm
   this.setState({
     dataSource:this.state.dataSource.cloneWithRows(this.state.data)
   });
  } 

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

关于react-native - Realm 数据更改时如何更新 React Native ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529058/

相关文章:

reactjs - react native : DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope' : The script a

javascript - 在运行下一个突变之前重置值

ios - 设备锁定时无法在路径上打开 Realm

android - 无法修改写入事务 Realm Android 之外的托管对象

ios - 选择 Realm 作为 iOS 应用程序数据库是否比 MySQL 更好?

ios - 无法将类型 'Option' 的值转换为预期的参数类型 '@noescape (Option) throws -> Bool'

android - 使用react-native测量音频的响度

css - react native : Different styles applied on orientation change

带有 React Native 的 iOS 自适应布局

swift - 如何使用 RKObjectMapping 在嵌套 RLMObject 中设置相同的主键?