我正在开发一个对 UI 和电子做出react的桌面应用程序。
所以,现在,我正在从服务器获取数据并使用 React 的 Context API 将其保存在状态中以更新 UI。
我在渲染器进程中保持状态和添加、删除和更新状态的函数,并且使用 IPC 我通过主进程(应该是这样)在渲染器进程之间共享数据。
但是随着应用程序的扩展,我需要一个更好的方法。类似于中央国家的东西(如果那是一回事)。
PS 如果有任何实时数据库(例如 rxdb),我可以将数据库与 Electron 应用程序一起使用吗?
我正在开发一个对 UI 和电子做出react的桌面应用程序。
所以,现在,我正在从服务器获取数据并使用 React 的 Context API 将其保存在状态中以更新 UI。
我在渲染器进程中保持状态和添加、删除和更新状态的函数,并且使用 IPC 我通过主进程(应该是这样)在渲染器进程之间共享数据。
但是随着应用程序的扩展,我需要一个更好的方法。类似于中央国家的东西(如果那是一回事)。
PS 如果有任何实时数据库(例如 rxdb),我可以将数据库与 Electron 应用程序一起使用吗?
我遇到了完全相同的问题,我使用了电子版(https://github.com/hardchor/electron-redux)。我也在我的 UI 中使用了 react。
拥有“主状态”的最佳方法是使用React-Redux。
Redux 可以做 Context 做的事情等等。它还具有许多用于侦听来自服务器的实时更新的库。当时最流行的是React-Redux-Firebase,它将您的 Reduxstore与您的 Firebase 数据库连接起来。
大多数开发人员都同意 Redux 需要一些时间来设置的事实,但绝对值得投入时间。我个人使用过 React-Redux-Firebase,我可以向您保证,所有实时更新都将在 250 毫秒store内出现在您的 Redux中。
Firebase 在一定程度上也是免费的(查看Firebase 定价)。
为了state在组件中访问您的 Redux ,您需要执行 3 个步骤:
步骤 1:创建一个mapStateToProps常量,其中包含您想要从store.
const mapStateToProps = state => ({
customers: state.customers,
books: state.books
})
第 2 步:创建一个actions常量,其中包含您在一个actions.js或类似文件中拥有的并且您想要调用的任何函数
import { fetchCustomers } from './actions.js'
const actions = {
fetchCustomers
}
请记住,任何从您的 API 获取的数据都可以(并且应该)从那里完成。
第 3 步:使用 Redux 的connect函数导出您的组件,包括 yourmapStateToProps和actionsconsts。
export default connect(mapStateToProps, actions)(myComponent);
Redux 在单个 stackoverflow 答案中解释起来相当复杂,因此我建议您查看文档或遵循教程。您应该能够在开发的第一天或第二天弄清楚所有事情。这绝对值得花时间。