在react-native 应用程序中,哪些最佳实践/模式使realm成为react 式数据源?特别是presentational and container components pattern人?

我想举一个例子:Realm with React Native

docs on auto-updates/change-events有点薄,official example没有利用这个功能(据我所知).

推荐答案

通过订阅事件并在收到更改事件时更新ui,可以使示例成为被动的.目前,只有在提交写事务时才会发送事件,但将来会添加更细粒度的更改事件.目前,您可以添加以下构造函数,以便在发生更改时更新ui:

constructor(props) {
  super(props);
  this.realm = new Realm({schema:[dogSchema]})
  this.realm.addListener('change', () => {
    this.forceUpdate()
  });
}

您需要保留一个领域实例来保持通知的活动性,并且您可以在组件的其余部分使用这个领域实例.

您可以在事件侦听器中设置组件的状态或props 来触发刷新,而不是调用forceUpdate,如下所示:

constructor(props) {
  super(props);

  this.realm = new Realm({schema:[dogSchema]})

  this.state = {...}; // Initial state of component.

  this.realm.addListener('change', () => {
    this.setState({...}); // Update state instead of using this.forceUpdate()
  });
}

React-native相关问答推荐

收到错误Constants.platform.ios.model已被弃用,以支持 expo-device

防止 React Native 在上下文值更改时重新安装组件

React Native:如何以编程方式对图像进行黑白过滤?

混合 JavaScript 移动开发 - Apache Cordova vs Capacitor with Ionic vs NativeScript vs React Native

运行react应用程序时出错

React 中的 getSnapshotBeforeUpdate() 是什么?

使用 Jest 测试 React Native 应用程序

React Native 创建自定义组件/库

如何在 Text ReactNative 中包含 TouchableOpacity

try 在 Android 上运行我的 React Native 应用程序时出错

axios 的网络错误和react-native

创建新的 react-native 元素时出现Unexpected token import错误

React Native 将状态中的数组值应用为 Picker 项

使用 React Navigation 导航堆栈时重新渲染组件

React Native如何将this.setState更改传递给父级

在react-native中调试应用程序崩溃

降级 react-native 的适当机制

Expo在使用Windows 10的android模拟器上运行

Mapping children of a parent component

React-Native 获取 XML 数据