问题标签 [react-state-management]
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.
javascript - 在 React Native 中提升状态时卡住
我正在为学习目的创建一个示例反应应用程序,因为我遵循了单独组件的层次结构:
现在,当我按下按钮时,我想通过在单选按钮中传递所选选项来导航到其他屏幕。
我读过这篇关于提升状态的文章。但问题是,这里没有我可以将状态提升到的共同父祖先。
如果我将状态列出到<HomeScreen>
组件,我该如何管理<RadioButton>
组件中的选择?
这是<RadioButton>
组件的完整代码:
在这里您可以看到最终做出的选择将存储在该组件的状态中(在 中radioSelected
)。
我在这里缺少什么?我的设计<RadioButton>
错了吗?
javascript - 检测组件外部的点击反应方式不是 dom 访问
我正在使用 React 实现裁剪功能。当用户右键单击时,会出现一个上下文菜单。在上下文菜单中,用户可以选择裁剪项目。当用户选择裁剪时,裁剪被激活。现在,我想在用户在该分区之外单击时关闭裁剪状态。我如何在没有 DOM 操作的情况下做出反应?还是我必须使用 DOM 操作,例如add EventListener & removeListener
?在这里使用 DOM 访问有什么缺点?请让我彻底了解这一点,因为这将在我将开发的许多功能中实现。例如,我正在谈论的上下文菜单或下拉菜单。
这是参考示例 - Sandbox。现在,当用户点击ReactCrop
组件外部时,我想通过反应方式关闭裁剪。
我不想继续document.addEventListener or removeListener
。
reactjs - 为多级状态对象反应 setState
我正在尝试更新包含多个级别的状态对象。请参阅此示例https://codesandbox.io/s/oq9kp9vy5y。
问题是,渲染方法中的值不会更新......只有第一个。我可以强制更新还是有更好的方法?
谢谢卡斯帕
javascript - 如何通过更灵活地渲染其他转储组件来使 React 中的智能组件更加智能
在渲染转储组件时,我目前对容器方法有一个问题。
假设我有一个ProductContainer,如下所示:
我可以使用 redux 来管理商店,但在这种情况下,我只想让它尽可能简单。
然后我还有两个转储组件作为ListProductComponent和AddProductComponent。
到目前为止,很聪明,所以转储,但问题出在智能渲染方面,我怎样才能让智能组件只渲染ListProductComponent,或者单独渲染AddProductComponent。
目前我有两个组件都显示在容器的渲染功能上,我实际上希望保持容器对 Product 实体执行 CRUD 操作,然后将相同的组件用于列出产品,在所有其他转储中添加新产品成分。
使用当前的实现我无法做到这一点,我不得不同时列出和添加新产品到同一个视图。
有些人建议让 ListProductContainer 和 addProductContainer 分别处理 crud 操作,但是这样分离是不是太多了?我实际上想将杂物保留在一个智能组件中。
如何为非常智能的组件提供更灵活的渲染来实现这一点。
更新:可能我想在容器上渲染部分这样的东西,但我不确定这样的东西是否可行。
然后在容器上的render() 中调用这个renderComponent,但是如何将状态/存储或其他属性传递给转储组件?
考虑到我可以做同样的事情:
能够传递状态并调用父/容器方法。
javascript - 在 React 中切换嵌套状态对象
我有一个包含对象数组的状态对象:
我想status
在单击事件时将布尔值从 true 切换为 false。我将此函数构建为单击处理程序,但它不会将事件连接到状态更改:
我很难跟踪嵌套 React 状态更改的控制流,以及活动事件如何从处理程序跳转到状态对象,反之亦然。
整个组件:
javascript - React setState()不适用于无线电字段handleInput方法
我正在研究 React 应用程序中的无线电提交方法。
这是有问题的无线电领域:
这是我的状态:
这将是具有多个单选字段的较大表单的一部分,所有单选字段都具有相同的name
属性,因此一次只能选择一个。
我试图在用户选择单选字段后立即更新状态,例如,如果用户单击上面显示的单选字段,那么我希望day2CorrectAnswer
状态的属性立即更新为day2AnswerA
.
为什么这不起作用?
javascript - 在 React JS 中使用多个组件从父级传递和更新 prop / state 值
我有两个组件,一个组件中有多个选项的选择列表,另一个组件中有一个按钮。
我希望在 UI 中您可以从选择列表中选择任何选项,还可以单击按钮将选择列表重置为“选择”。
这两个组件都在渲染的父组件内 - 我试图将父组件保持为“单一事实来源”,以便选择列表可以在选择时更新其值,然后重置按钮也可以更新它相同的值。
我已经写了我认为这应该如何工作,但是选择列表卡在第一个项目上,并且重置按钮没有更新列表,无法发现我哪里出错了,如果有人可以给我一些建议/为我指明正确的方向,我将不胜感激 - 谢谢
reactjs - 在 React JS 中将 props / state 传回父组件
我有两个组件,一个包含多个选项的选择列表和一个按钮组件
我想在 UI 中做的是用户可以从他们想要的选择列表中选择任何选项,然后按下按钮将列表重置为“选择”
我将父组件作为唯一的事实来源 - 所有更新的状态都传递回父组件,实际上我已经在一个文件的上下文中使用以下代码很好地工作了;
但是我真正喜欢做的是将重置按钮移动到它自己的文件中,这就是我试图将道具/状态传递回父级的地方。
所以渲染方法实际上看起来像这样
我导入 TestComponent 然后在 TestComponent 内部是我将为 SelectListReset 组件提供代码的地方,但我遇到的问题是现在这些值作为道具发送给它应该是不可变的,所以不能更新?
这就是我的理解停止的地方..如果有人能指出我正确的方向,我将非常感激!