アプリの初期化
アプリのレイアウトを作成したら、今度はReactコンポーネントをマウントしてアプリを初期化する必要があります。Framework7の初期化パラメータについては、適切なFramework7 App Parametersセクションで読むことができます。
WebpackやRollup、またはES-nextモジュールをサポートする他のバンドルラーを使用していると仮定すると、以下のような構造になります。
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<!-- ... メタとスタイル ... -->
<link rel="stylesheet" href="path/to/framework7-bundle.min.css">
</head>
<body>
<!-- アプリのルート要素 -->
<div id="app"></div>
<!-- スクリプトが自動注入される -->
</body>
</html>
/* my-app.js */
// Reactのインポート
import React from 'react';
// ReactDOMのインポート
import ReactDOM from 'react-dom';
// F7 Bundleのインポート
import Framework7 from 'framework7/lite-bundle';
// F7-Reactプラグインのインポート
import Framework7React from 'framework7-react';
// F7-Reactプラグインの初期化
Framework7.use(Framework7React);
// メインアプリコンポーネントのインポート
import App from './App.jsx';
// マウントReactアプリ
ReactDOM.render(
React.createElement(App),
document.getElementById('app')
)
ルートのApp.jsxコンポーネントには、通常、トップレベルのFramework7Appコンポーネントがあります。このコンポーネントは、アプリの設定に使用されます。
// App.jsx
import { App, View, Page, Navbar, Toolbar, Link } from 'framework7-react';
import routes from './routes.js';
const f7params = {
// アプリのルートを持つ配列
routes,
// アプリ名
name: 'My App',
// App id
id: 'com.myapp.test',
// ...
};
export default () => (
{/* Main Framework7 App component where we pass Framework7 params */}
<App {...f7params}>
{/* initial page is specified in routes.js */}
<View main url="/" />
</App>
)
上記の例では
- App
メインのFramework7アプリコンポーネントの
params`プロパティにFramework7パラメータを渡しています。 - ReactDOM.renderに渡されたルート要素(
document.getElementById('app')
)がFramework7のルート要素として使われます。
また、(アプリ内でページ間の移動がある場合には)ルート付きの配列を指定する必要があります。React Component Extensions、ルーターとルートについての情報は、Navigation Routerのセクションで確認してください。