kadira:流式路由器路由在呈现DOM之前执行

时间:2015-12-15 13:37:59

标签: meteor

我正在尝试使用流量路由器在流星中做出反应。路线的定义如下:

  FlowRouter.route('/',
     {
        action(){
           const containerElement = document.getElementById("react-root");
           if (containerElement) {
              const app = React.createElement("<App/>");
              ReactDOM.render(app, containerElement);
           } else {
              console.log("no element react-root found");
           }
        }
     })

并且HTML非常基础:

    <head>
        <title>Todo List</title>
    </head>

    <body>
        <div id="react-root">react-root</div>
    </body>

当我启动meteor并导航到localhost:3000时,我在页面上显示react-root,在控制台中显示消息no element react-root found

我尝试将路由定义包装在Meteor.startup(中,但后来我收到错误,指出路由/未定义。

1 个答案:

答案 0 :(得分:1)

来自arunoda的this comment

  

现在Flow Router不会等待DOM。我们在布局层中进行。

因此,在您选择使用React LayoutBlaze Layout之前,您可以像这样包装代码,以便仅在加载DOM时触发它:

FlowRouter.route('/',
 {
    action(){
     $(function () {
       const containerElement = document.getElementById("react-root");
       if (containerElement) {
          const app = React.createElement("<App/>");
          ReactDOM.render(app, containerElement);
       } else {
          console.log("no element react-root found");
       }
     });
    }
 })