reactjs - 更改组件放置时维护组件状态
问题描述
我的问题如下:我有一个InnerComp
可以放置在 JSX 结构内的两个不同位置的它,它的位置取决于一个变量place
。
我需要的是,当父组件更改 的位置时InnerComp
,当前状态(我的意思不仅仅是组件的内部状态,而是渲染的其他子组件,与它相关的任何内容)保持不变。
我唯一的想法是将其保存InnerComp
到 auseRef
中,但它似乎不起作用。让我向您展示此沙箱中的示例:https
://codesandbox.io/s/pedantic-smoke-3risy
现在,请按照下列步骤操作:
- 如果单击increase,您会看到
counter
父组件props.counter
中InnerComp
的 - 如果单击增加内部,
innerCounter
则增加; - 然后,如果您单击switch place,
InnerComp
则 将呈现在另一个位置,但innerCounter
会回到0
;
我知道当我想更改位置时,我可以尝试更改 HTML TAG 结构并更改 CSS(我确信这会起作用),但不幸的是,在真正的 REACT 应用程序中,我需要过度复杂化使之成为可能的结构(这两个位置不相关,如本例所示)。
我完全没有想法,所以在这里我问一种方法来实现这一点。向我指出一种可能的方法就足够了,然后我会尝试。
解决方案
我认为这是React.Portals的最佳案例。但是我还没用过☹️。
推荐阅读
- node.js - 有条件地设置 pino DestinationStream
- python - 尝试安装 Anaconda 时出现 TypeError
- c# - 继承对象列表
- firebase - 尝试将 A 记录添加到自定义 Firebase 站点时出现“记录已在使用中”
- neo4j - 为什么我的 Neo4j 数据库的大小比上周小,即使我一直在添加节点、关系和属性而不是删除它们
- sql - 如何在SQL中分配多天的分钟差异
- javascript - 将 Javascript Map 函数返回的数组保存到新数组
- javascript - 如何使用 drupal.behaviours 在 Drupal 上编写 javascript
- javascript - 开玩笑地模拟一个 ES6 类以供被测试的类使用
- ruby - 如何将证书颁发机构添加到捆绑程序?