如何在小程序中使用
上一篇
如何在 Vue 中使用
下一篇
如何在 Node.js 中使用
Loading...
# 安装 F2 依赖npm i @antv/f2 --save# 支付宝小程序npm i @antv/f-my --save# 微信小程序npm i @antv/f-wx --save
如果项目已有 JSX 编译,可忽略此步骤。
package.json:
{"scripts": {"beforeCompile": "babel pages --out-dir pages --only **/*.jsx"}}
在小程序生态中,F2 提供了两套小程序组件:f-my(默认 NativeCanvas 实现)与 f-my-web(基于 WebCanvas 实现)。通过引入不同组件包来选择 Canvas 类型。
f-my:使用 NativeCanvas(原生 Canvas 实现),对齐 Web Canvas API,适用于对原生特性有依赖或兼容性要求较高的场景f-my-web:使用 WebCanvas(在小程序内基于 web 技术栈实现的 Canvas),在包含大量同层组件或频繁跨层通信的复杂页面中,通常能显著降低总耗时,获得更优的交互性能f-my 与 f-my-web 之间复用mini.project.json:
{"scripts": {"beforeCompile": "npm run beforeCompile"}}
page.json:
{"usingComponents": {"f2": "@antv/f-my"}}
page.axml:
<view class="container"><f2 onRender="onRenderChart" onCanvasReady="onCanvasReady"></f2></view>
page.json:
{"usingComponents": {"f2": "@antv/f-my-web"}}
page.axml:
<view class="container"><f2 onRender="onRenderChart"></f2></view>
page.acss:
.container {width: 100%;height: 600rpx;}
chart.jsx:
import { Chart, Interval, Axis } from '@antv/f2';export default (props) => {const { data } = props;return (<Chart data={data}><Axis field="genre" /><Axis field="sold" /><Interval x="genre" y="sold" color="genre" /></Chart>);}
page.jsx:
import Chart from './chart';const data = [{ genre: 'Sports', sold: 275 },{ genre: 'Strategy', sold: 115 },{ genre: 'Action', sold: 120 },{ genre: 'Shooter', sold: 350 },{ genre: 'Other', sold: 150 },];Page({data: {},onRenderChart() {return <Chart data={data} />;},})
如果不想在入口文件写 JSX 语法,可以使用 createElement 方式:
page.js:
import { createElement } from '@antv/f2';import Chart from './chart';const data = [{ genre: 'Sports', sold: 275 },{ genre: 'Strategy', sold: 115 },{ genre: 'Action', sold: 120 },{ genre: 'Shooter', sold: 350 },{ genre: 'Other', sold: 150 },];Page({data: {},onRenderChart() {return createElement(Chart, {data: data,});},})
page.json:
{"usingComponents": {"f2": "@antv/f-wx"}}
page.wxml:
<view class="container"><f2 onRender="" /></view>
page.wxss:
.container {width: 100%;height: 600rpx;}
chart.jsx:
import { Chart, Interval, Axis } from '@antv/f2';export default (props) => {const { data } = props;return (<Chart data={data}><Axis field="genre" /><Axis field="sold" /><Interval x="genre" y="sold" color="genre" /></Chart>);}
page.jsx:
import Chart from './chart';const data = [{ genre: 'Sports', sold: 275 },{ genre: 'Strategy', sold: 115 },{ genre: 'Action', sold: 120 },{ genre: 'Shooter', sold: 350 },{ genre: 'Other', sold: 150 },];Page({data: {onRenderChart() {return <Chart data={data} />;},},})
page.js:
import { createElement } from '@antv/f2';const data = [{ genre: 'Sports', sold: 275 },{ genre: 'Strategy', sold: 115 },{ genre: 'Action', sold: 120 },{ genre: 'Shooter', sold: 350 },{ genre: 'Other', sold: 150 },];Page({data: {onRenderChart() {return createElement(Chart, {data: data,});},},})