JavaScript中的功能反应式编程库。
如何检查当前的 javascript/typescript 对象是否属于 ObservableArray 类型?
如何检查当前 javascript/typescript 对象是否属于 ObservableArray 类型? 我尝试执行 typeof myObject 但它返回我对象。 我正在使用 mobx 商店和一个可观察的商店字段...
无法使用 Jest 和 Provider 组件在 React 测试中注入 MobX 存储
我正在尝试为 React 组件编写一个单元测试,其中我要求 MobX 存储中的属性处于非默认状态。 我一直在尝试修改状态并将其注入到组件中......
MobX:由于启用了严格模式,因此不允许在不使用操作的情况下更改(观察到的)可观察值
我的上下文如下所示: 类 AuthStoreClass { 授权用户=空 构造函数(){ 使自动观察(这个) } 登录=异步(参数)=> { 常量{数据:{数据:
这里我粘贴了为 mobx 状态管理编写的类组件的代码,并将其调用到另一个文件;问题是我有超过 450 个 API 响应,并且需要在本地存储,所以我...
在 React 18 应用程序中使用 React 16 节点模块
“在 React 18 应用程序中使用 React 16 节点模块安全吗? 我正在开发一个 React 项目,我需要合并一个为 React 16 构建的第三方库。我担心...
我有一个可观察的对象,我想在其中存储一些数据。 键是我的客户实体的唯一 ID,值是客户订单的数组(它们本身就是对象)。 我初始化一个
只是文档中的一个基本示例 类订单行{ 价格 = 0 金额 = 1 构造函数(价格){ 使自动观察(这个) 这个.价格 = 价格 } 获取总计(){ ...
我是 React 和 MobX 的初学者,我正在开发一个需要管理比较公司状态的项目。我想确保我遵循最佳实践并且不与 MobX 相矛盾
我想问一下mobx-state-tree中的模型之间是否有共享动作的方法? 让我们考虑这个示例(AuthModel 的登录操作): 从“mobx-state-tree...
mobx getter 似乎对 localStorage 中的更改没有反应。 类测试{ 构造函数(){ makeAutoObservable(this); this.setCount = this.setCount.bind(this); } 私人静态_ins...
有没有办法从商店内使用 Apollo/useQuery 获取?
我在这里遇到了一个架构问题 - 过去几个月我一直在使用 Apollo 缓存进行本地状态管理来开发我的项目,现在正在转向 MobX。我的应用程序使用 graph-b...
我们正在开发一个使用 React 和 Mobx 的界面。 我们有一个组件可以通过以下方式激活用户帐户 发送到用户电子邮件的链接和代码: https://mysite/activate?代码=
嗯,这个问题很简单。 假设我们有一些带有标识符的模型 const ReferableModel = types.model({ id: types.identifier(), }) 以及无限数量的模型可以
我需要如何编写周期性计时器来使用 Mobx 测试与服务器的连接?
我想用Mobx编写ReactionBuilder,它将定期检查与我的服务器的连接,如果没有连接则发出新的请求来连接它。我怎样才能正确地做到这一点? 我哈...
这可能是“基本(缺乏)理解”问题之一。我正在进入 React,并致力于我的第一个主要应用程序,并且遇到了一个问题。 本质上是...
我刚刚学习了react和react-native 3个月了,我对函数式组件非常熟悉,从一切开始,因为从第一步开始,我已经在函数中写了一个“hello world”...
MobX React - 更新对象数组的单个索引会重新渲染所有子对象
我有一个 mobx 对象存储,这些对象显示在列表视图中,并在存储值上有一个地图,如下所示: {ObjectStore.objects.map((obj, 索引) => 我有一个 mobx 对象存储,这些对象显示在列表视图中,并在存储值上有一个地图,如下所示: {ObjectStore.objects.map((obj, index) => <ObjectItem key={obj.id} obj={obj} objIndex={index} ...unrelated UI Pros /> )} 在 ObjectItem 中有一个 onClick 处理程序,它向该特定对象添加一些新内容: const handleClick = () => { ObjectStore.updateObjectbyIdx(objIndex, newData) } 在商店 updateObjectbyIdx (index, data) { this.objects[index] = { ...this.objects[index], ...data} } 两个 React 组件都包装在观察者中。当句柄单击运行时,它会导致父容器重新呈现,然后所有 ObjectItem 组件重新呈现,即使附加数据仅通过索引添加到单个项目。 最初我完全避免使用索引并使用地图更新它,如下所示: updateObjectbyId (id, data) { this.objects = this.objects.map(obj => obj.id === id ? { ...obj, ...data} : obj }) } 但我假设由于这是创建一个新的数组引用,因此父容器观察ObjectStore.objects重新渲染。 切换到索引让我期望父级不会重新渲染,因为主数组引用仍然存在,并且由于我在最新点解构了值,因此只有单个 ObjectItem 会重新渲染。 我最终确实让它发挥作用: updateObjectbyIdx (index, data) { Object.keys(data).forEach(dataKey => { this.objects[index][dataKey] = data.dataKey } } 但是,当我只想更新数组中单个对象中的数据时,这似乎是一个奇怪的解决方法。 这样做: updateObjectbyIdx (index, data) { this.objects[index] = { ...this.objects[index], ...data} } 您还更新了对该对象的引用,并且由于父组件使用该对象,它将重新渲染。 您可以这样做 Object.assign:,而不是最后一个解决方案(实际上,这是正确且很好的) updateObjectbyIdx (index, data) { Object.assign(this.objects[index], data) } 这将保留引用并仅更新属性。只需记住深层嵌套的属性、对象、数组即可。要处理它们,您最好使用某种 mergeDeep 函数,Object.assign 不会进行合并,它基本上会覆盖您在自定义循环中所做的所有内容。
问题:当更新 MobX 中的状态或调用 SWR 中的突变时,所有组件都将被重新渲染,尽管我只想更新一个元素。 示例代码: 在 React 沙箱中,渲染
我有一个简单的代码,我是 mobx 的新手,它在上下文中更容易,但我必须使用 mobx : 从“mobx”导入{makeAutoObservable}; 从“../Books/Books.repository...
Mobx - runInAction() 用法。为什么我们需要它?
为什么我们需要 runInAction 方法以及它到底是如何工作的? 有人可以向我解释 runInAction 功能吗?