c3等待加载样式 vue_vue.js – 使用Nuxt渲染C3图表

背景

我目前正在使用Nuxt,需要在vue组件中渲染一些C3图表. C3在库中调用Window,因此它会在C3库import语句中抛出错误.

window is not defined

我知道这是发生的,因为它是服务器端渲染,它需要浏览器访问窗口.我也知道我需要告诉Nuxt允许这个特定组件,或者组件的一部分在浏览器中呈现.

我知道C3建立在D3之上,所以我想我也会尝试加载它.我读到这就是你如何处理非服务器端渲染库.

示例代码

nuxt.config.js

plugins: [

{ src: '~plugins/d3', ssr: false },

{ src: '~plugins/c3', ssr: false },

],

build: {

vendor: ['d3', 'c3'],

},

/plugins/d3.js

import * as d3 from 'd3';

export default d3;

/plugins/c3.js

import c3 from 'c3';

export default c3;

一旦我添加这些配置,然后移动到我想要使用它们的组件,

import * as d3 from 'd3';

import c3 from 'c3';

import 'c3/c3.css';

这允许D3工作.但是当我导入C3时,它仍然会抛出相同的错误.所以,我读到我应该试试这个,

let c3 = null;

if (process.browser) {

c3 = require('c3');

}

这仍然不起作用,C3仍然会抛出错误.新的错误是,

c3 is not defined.

我在mount中渲染C3图表

mounted() {

const chart = c3.generate({

bindto: '#result-chart',

data: {

columns: [['data1', 30], ['data2', 120]],

type: 'pie',

},

});

},

据我所知,现在if语句正在工作,并允许页面在跳过导入时继续呈现.但是现在它已经跳过了它,一旦页面可用于浏览器,我该如何实际渲染图形?使用我当前的实现C3永远不会在范围内.

我在一个点看到的另一个错误是生成器未定义.我无法弄清楚它来自哪里,但以防万一有帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值