我在官方网站上找到了这个example,它描述了如何使用portal
。在这个例子中,正在为使用ReactDOM.createPortal()
的模态创建新的**'root'**div。有没有一种方法可以将组件传送到另一个组件(不仅仅是不同的根)?
- 使用
portal
可能无法完成-我只是认为它可能对此解决方案有用 *
我正在尝试使用逻辑依赖于MyComponentA或MyComponentB的按钮“扩展”导航(不同按钮,不同组件指示的不同行为,但放置在导航的DOM中)。
这是我试图实现的目标的简化示例:
应用程序
这是我的应用程序的根组件,包括导航、MyComponentA和MyComponentB
class App extends React.Component {
render() {
return (
<Navigation/>
<MyComponentA/>
<MyComponentB/>
);
}
}
导航
这是我想放置门户输出的组件。
class Navigation extends React.Component {
render() {
return (
<OutputOfPortal>
{/* I want to teleport something here from another component */}
</OutputOfPortal>
);
}
}
我的组件A
这是我想放置门户源代码的组件。与MyComponentB的情况相同,但内容不同。
class MyComponentA extends React.Component {
render() {
return (
{/* Another code */}
<InputOfPortal>
{/* I want to teleport something from here to navigation */}
<button onClick={this.functionInThisComponent}> click me </button>
</InputOfPortal>
{/* Another code */}
);
}
}
3条答案
按热度按时间x759pob21#
我已经将id
navigation-controls
设置为Navigation
中的元素。然后我创建了另一个名为NavigationExtension
的组件,它被用作Navigation
的门户。此门户的每个子组件都将其功能保留在创建它的原始组件中。我刚刚创建了一个
div
,在我想传送的地方有id。这将把包裹在里面的任何东西传送到导航系统
最后宣布我的按钮和传送到导航。
我不知道我是否只是不明白其他的答案,但这正是我想要的。
efzxgjgh2#
在那之后你能去你想要的路径的路径象localhost 3000/localhost 3000/signin localhost 3000/user/:id
erhoui1w3#
我有一个
position:sticky
的顶部面板,有时候我需要在粘滞区域添加特定页面的控件。唯一的解决办法是以某种方式将这些控件“传送”到顶部。下面是我的做法:一米一分一秒
src/utils.ts