gpt4 book ai didi

meteor - 将应用程序渲染到主体时,语义 UI 侧边栏会使用 ReactJS 引发控制台错误

转载 作者:行者123 更新时间:2023-12-03 13:29:48 26 4
gpt4 key购买 nike

有什么方法可以在不使用 HTML 正文中的 id 标签的情况下将 Semantic-UI 侧边栏渲染到 React 应用程序中?我想避免必须将 React 组件渲染到 HTML 正文中的标记,例如不使用:<div id="some-name"></div>

我正在使用 Meteor,但应该不会有什么不同,因为这个问题似乎是 React 和 Semantic UI 特定的。

下面的代码在浏览器控制台中给出以下错误:

Sidebar: Had to add pusher element. For optimal performance make sure body content is inside a pusherSidebar: 

Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag <div class=​"ui sidebar inverted vertical menu left uncover animating visible" data-reactid=​".0.0">​…​</div>​

Warning: ReactMount: Root element has been removed from its original container. New container:

index.html 语义侧边栏1

app.js

// App component - represents the whole app
App = React.createClass({

showSideMenu() {
$('.ui.sidebar')
.sidebar('toggle');
},

render() {
return (
<div>
<div className="ui sidebar inverted vertical menu">
<a className="item">
1
</a>
<a className="item">
2
</a>
<a className="item">
3
</a>
</div>

<div className="pusher">
<button onClick={this.showSideMenu} className="ui button">Test MyModalDlgOne</button>

<p />
React App.
</div>
</div>
);
}
});

if (Meteor.isClient) {
// This code is executed on the client only

Meteor.startup(function () {
// Use Meteor.startup to render the component after the page is ready
// React.render(<App />, document.getElementById("render-target"));
React.render(<App />, document.body);
});
}

最佳答案

我有一些实现reactJS + Semantic-UI 侧边栏的经验,所以可能会有所帮助。

抛出错误的原因是侧边栏组件遵循 <body>默认情况下标记,并将向相邻元素添加一个 pusher 类,用作动画期间移动/覆盖的窗口内容。

我不完全确定你想做什么,但看起来你想初始化侧边栏,所以 <body> tag 是 React 渲染结果的父标签,但保留您提供的 DOM 结构。像这样的事情:

<!-- Your desired parent element -->
<body>
<!-- Return result of the React render -->
<div>
<div class="ui sidebar"></div>

<div class="pusher"></div>
</div>
</body>

如果您计划使用<div class="pusher">,这将很好地工作元素作为语义 UI 的上下文。如果是这种情况,您需要在初始化侧边栏时定义一个上下文。可以在 showSideMenu() 中初始化它但可能更适合 componentDidMount() .

   componentDidMount: function() {
// Localize the selector instead of having jQuery search globally
var rootNode = React.findDOMNode(this);

// Initialize the sidebar
$(rootNode).find('.ui.sidebar').sidebar({
context: $(rootNode)
});
},
showSideMenu: function() {
// Same thing as before, might want to store this as a variable
var rootNode = React.findDOMNode(this);
$(rootNode).find('.ui.sidebar').sidebar('toggle');
}

这记录在 Using a custom context

关于meteor - 将应用程序渲染到主体时,语义 UI 侧边栏会使用 ReactJS 引发控制台错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com