Meteorjs + React,如何在 Meteor.startup 中渲染多个元素
Meteorjs + React, how to render several elements in Meteor.startup
我正在尝试声明两个我想要呈现的不同 React 元素。这两个元素是分离的元素,例如显示元素(App.jsx)和自定义帐户系统(Login.jsx)。但是在我的测试中,我在两个 jsx 文件中都有相同的代码,以确保问题与它们的特定部分无关。
我还创建了一个 /imports/startup/client/index.js 文件(在 /client/main.js 文件中调用):
import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
import './accounts-config.js';
import App from '/imports/ui/App.jsx';
import Login from '/imports/ui/Login.jsx';
Meteor.startup(() => {
render(<App />, document.getElementById('app'));
render(<Login />, document.getElementById('login'));
})
并且 /client/main.html 包含相关的 div 标签:
...
<div id="app"></div>
<div id="login"></div>
...
问题是第二个渲染从未显示(这里是 div 登录),我观察到只有第一个渲染被解释。
我找到的所有示例都只涉及单个反应元素。所以我想知道如何像在我的 html 文件中一样使用几个单独的反应元素?
我是 meteorjs 和 React 世界的新手,所以也许我没有得到正确的理念...
您可以使用 React 16 的新功能,即门户。
ReactDOM.createPortal的使用方法请参考以下link:
我仅使用 Meteor.startup(()(在我的 index.js 中)中的一个渲染就解决了我的问题。
React 文档指定只能在 Meteor.startup(()(在我的 index.js 中)中声明一个渲染。
https://reactjs.org/docs/components-and-props.html
我的代码如下:
在我的 index.js
Meteor.startup(() => {
render(<App />, document.getElementById('app'));
})
诀窍在于这个超级组件 (App.jsx) 必须用于调用所有其他组件。在我的示例中,通过调用登录组件:
render() {
return (
<div className="container">
<Login />
</div>
)
}
我相信是因为 render() 语句也有一个隐含的 return 语句,所以由于它只能执行和 return 一个,所以不会执行下一个 render 语句。
我正在尝试声明两个我想要呈现的不同 React 元素。这两个元素是分离的元素,例如显示元素(App.jsx)和自定义帐户系统(Login.jsx)。但是在我的测试中,我在两个 jsx 文件中都有相同的代码,以确保问题与它们的特定部分无关。
我还创建了一个 /imports/startup/client/index.js 文件(在 /client/main.js 文件中调用):
import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
import './accounts-config.js';
import App from '/imports/ui/App.jsx';
import Login from '/imports/ui/Login.jsx';
Meteor.startup(() => {
render(<App />, document.getElementById('app'));
render(<Login />, document.getElementById('login'));
})
并且 /client/main.html 包含相关的 div 标签:
...
<div id="app"></div>
<div id="login"></div>
...
问题是第二个渲染从未显示(这里是 div 登录),我观察到只有第一个渲染被解释。
我找到的所有示例都只涉及单个反应元素。所以我想知道如何像在我的 html 文件中一样使用几个单独的反应元素?
我是 meteorjs 和 React 世界的新手,所以也许我没有得到正确的理念...
您可以使用 React 16 的新功能,即门户。
ReactDOM.createPortal的使用方法请参考以下link:
我仅使用 Meteor.startup(()(在我的 index.js 中)中的一个渲染就解决了我的问题。 React 文档指定只能在 Meteor.startup(()(在我的 index.js 中)中声明一个渲染。 https://reactjs.org/docs/components-and-props.html
我的代码如下: 在我的 index.js
Meteor.startup(() => {
render(<App />, document.getElementById('app'));
})
诀窍在于这个超级组件 (App.jsx) 必须用于调用所有其他组件。在我的示例中,通过调用登录组件:
render() {
return (
<div className="container">
<Login />
</div>
)
}
我相信是因为 render() 语句也有一个隐含的 return 语句,所以由于它只能执行和 return 一个,所以不会执行下一个 render 语句。