Метеор - используйте шаблон Blaze в шаблоне React из маршрута

В настоящее время я разрабатываю реактивное веб-приложение с помощью meteor, которое использует пакет templates: tabs, который предназначен для создания табличного интерфейса. Я планирую отображать таблицу данных на этих вкладках и отправлять запросы в разные базы данных в зависимости от того, какая вкладка выбрана аналогично cars.com.

В приложении уже есть FlowRouter, который ссылается на два разных маршрута, и я хочу, чтобы вкладки присутствовали только для одного из них. Маршрутизатор, который я хочу иметь для отображения вкладок, выглядит следующим образом.

#router.jsx
FlowRouter.route('/', {
action() {
    mount(MainLayout, {
      content: (<Landing />)
    }
  )
}
});

Мне нужно создать следующий шаблон: template name="myTabbedInterface">

#Tabs.html
{{#basicTabs tabs=tabs}}
<div>


  <p>Here's some content for the <strong>first</strong> tab.</p>

</div>

<div>

  <p>Here's some content for the <strong>second</strong> tab.</p>

</div>

<div>

  <p>Here's some content for the <strong>third</strong> tab.</p>

</div>

  {{/basicTabs}}

</template>

Вот файл JS, в котором есть помощники для шаблона.

 #myTabbedInterface.js
 ReactiveTabs.createInterface({
  template: 'basicTabs',
  onChange: function (slug, template) {
    // This callback runs every time a tab changes.
    // The `template` instance is unique per {{#basicTabs}} block.
    console.log('[tabs] Tab has changed! Current tab:', slug);
    console.log('[tabs] Template instance calling onChange:', template);
  }
});

Template.myTabbedInterface.helpers({
  tabs: function () {
    // Every tab object MUST have a name and a slug!
    return [
      { name: 'First', slug: 'reports' },
      { name: 'Second', slug: 'sources' },
      { name: 'Third', slug: 'feedback' }
    ];
  },
  activeTab: function () {
    // Use this optional helper to reactively set the active tab.
    // All you have to do is return the slug of the tab.

    // You can set this using an Iron Router param if you want--
    // or a Session variable, or any reactive value from anywhere.

   // If you don't provide an active tab, the first one is selected by default.
    // See the `advanced use` section below to learn about dynamic tabs.
    return Session.get('activeTab'); // Returns "first", "second", or "third".
  }
 });

Наконец, вот файл, к которому "Landing" направляет маршрутизатор, где я хочу, чтобы шаблон вызывался:

#Landing.jsx
`import {Blaze} from 'meteor/blaze';
import React, {Component} from 'react';
import { Meteor } from 'meteor/meteor';

export default class Landing extends Component{


 render(){
  return(


  <div>
   //Want to render template here
  </div>

     )
  }

}`

Итак, как можно визуализировать шаблон (Blaze) в HTML при рендеринге React? Спасибо.

1 ответ

Я предлагаю не использовать пакет Blaze для решения проблемы React. Я знаю, что это не то, что вы спросили, но, возможно, это поможет.

Реализация интерфейса с вкладками - действительно простая задача, смешивать React и Blaze не стоит. Хорошая библиотека для решения этой проблемы - React-Bootstrap, она реализует несколько полезных компонентов React, таких как <Tab>:

<Tabs>
  <Tab title="Apples">Apple content</Tab>
  <Tab title="Pears">Pear content</Tab>
  <Tab title="Melons">Melon content</Tab>
</Tabs>

Но если вы хотите идти по этой дороге, вы можете попробовать Blazetoreact.

Другие вопросы по тегам