问题标签 [unstated]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
740 浏览

reactjs - 避免未声明的存储重新初始化

我正在尝试unstatedhttps://github.com/jamiebuilds/unstated)并且喜欢它的简单性,但遇到了意外的行为。在顶层,我有:

然后沿着我的组件树,我再次使用这样的东西访问商店:

只要我的树保持不变,这就会很好。一旦我有需要重建叶子的状态更改,我的数据容器中的状态对象就会重新初始化并清除。我究竟做错了什么?

0 投票
1 回答
329 浏览

react-native - React Native 中未声明和 React 导航的问题

我有这个功能

如果我像上面那样运行它,导航就可以了。如果我取消注释 store.flipState() 行,状态会发生变化,但导航不起作用(屏幕只是刷新)。console.log 在这两种情况下都有效。

如何同时更改状态和导航?

我在 React Native 中使用 Unstated 和 React Navigation。

谢谢你。

0 投票
1 回答
399 浏览

javascript - Unstated 无法读取未定义的属性“setState”

我正在使用一个名为unstated的状态库,当我运行以下代码时:

我收到此错误:

TypeError:无法读取 Store.js:19 处未定义的属性“setState”

docs在我想设置状态时,我肯定会得到结果,因为它确实包含对象。我的做事方式也与他们在文档/示例中的方式完全相同。

为什么没有this看到参考?是因为它在承诺中吗?嗬!

0 投票
2 回答
1142 浏览

reactjs - 如何在渲染方法之外使用未说明的反应?

我在我的项目中使用 ustated 库。

在渲染方法中,我是这样使用set的:

我如何调用api.setMessage渲染的外部?例如在componentDidMount

ApiSubscribe 是:

0 投票
1 回答
371 浏览

reactjs - Unstated.js 访问其他容器中的容器

我刚刚开始研究未说明的内容,并且遇到了一个我还找不到答案的问题。

假设我有两个容器:

  • 集装箱A
  • 集装箱B

如果我想在 ContainerA 中访问 ContainerB 的状态,甚至在 ContainerA 中调用 ContainerB 的方法,该怎么办?

到目前为止,我看到的唯一方法是调用 ContainerA 方法并手动传递 ContainerB 实例作为单独的参数,这似乎非常糟糕和重复,因为我可能需要在多个地方做同样的事情......

0 投票
2 回答
1533 浏览

reactjs - 使用 API 调用 unstated.js (React Context API) 初始化容器

我想使用unstated.js(React 上下文包装器)使用来自 api 调用的数据简单地初始化容器状态。

我看到了一个例子,其中 Container 是用几个 var 实例化的:

如果我想获取一些 api 数据以传递到此容器的状态 - 这是正确的方法吗?或者我应该从父组件传递道具?这是为了在首次加载时将数据加载到 SPA 中。

0 投票
2 回答
1287 浏览

reactjs - React - 您可以从外部函数更新未声明的容器状态吗?

在来自 Unstated 库的示例中,它们通过与订阅容器的 jsx 按钮交互来更新容器内的状态。

有没有办法从容器外部组件中的函数更新容器内的状态?因此,例如,如果我想在返回承诺期间更新状态,我将如何去做。伪代码

0 投票
1 回答
821 浏览

reactjs - 将 Unstated 与 TypeScript 和 React 一起使用,如何在其中获取类型化的容器实例孩子们?

在我的 React 应用程序中,我使用Unstated来管理共享状态,但是我在使用 TypeScript 时遇到了问题:<Subscribe>组件向我传递了一个类型为Container<any>. 这意味着它需要转换为我自己的类型,例如Container<MyState>,在我可以安全地使用它之前。

相反,如果我希望 Unstated 将我的容器的已键入实例传递给我,我应该如何包装和/或分叉Unstated 源和/或其类型文件,以便当我获取Container实例时,它的类型为Container<MyState>

顺便说一句,我想要获得传入的类型化容器的特殊原因是,我可以使用复杂状态的解构,而不必切换到使用更冗长的胖箭头函数的块形式。

这是我希望能够编写的代码的简化示例:

这是我当前的编写方式,在使用 TypeScript 的简化未说明示例中:

0 投票
1 回答
181 浏览

react-router-v4 - 将 React Router 与 Unstated 集成

以下代码(其中每个组件包含<Subscribe to={[ZebraContainer]}>)会导致 ZebraContainer 被构建三次。是否有一种公认的模式可以将 ZebraContainer 维护为全局单例并且只构造一次?

0 投票
2 回答
122 浏览

javascript - Unstated (React) 中的条件

我正在学习在我的反应应用程序中实现 Unstated。

我制作了一个简单的应用程序,它使用 Unstated 显示注释。

这是我的 NoteContainer:

如您所见,这非常简单,它只是更改状态中的 isDisplaying 属性,以便我可以在 Note.js 组件上使用它来显示注释的标题和消息,如下所示:

所需的功能是,当我单击查看注释时!按钮,它显示按钮上方注释的标题和描述,如果我再次单击它,它会隐藏它们。

但是,我得到的是它创建了另一个订阅组件,这似乎删除了“见注!” 按钮部分。这是结果的图像。

结果

问题是我不能再次使用按钮来隐藏注释信息,我显然使用了错误的订阅组件,但我想不出另一种方法来使用未声明的条件,所以对此的任何帮助将不胜感激。

在此先感谢,祝您度过愉快的一周!