d3.js - 如何在 vue-cli 中创建 d3 svg?
问题描述
我是 d3 的新手,正在尝试在 vue-cli 中创建 d3 SVG。
浏览器没有显示任何代码如下,但它可以在没有 vue 的 HTML 上运行。
谁能告诉我我的编码有什么问题?
非常感谢你!
<template>
<div>
<div id='chart' ></div>
</div>
</template>
<script>
import * as d3 from 'd3'
export default {
name: 'priceChart',
data() {
return {
}
},
methods:{
createSvg(){
const svg =
d3.select('#chart').append('svg')
.attr('width',500)
.attr('height',400);
svg.append('rect')
.attr('x',0)
.attr('y',0)
.attr('width',500)
.attr('height',400)
.style('fill','red')
}
},
created(){
this.createSvg();
}
}
</script>
解决方案
DOM元素在方法中不可用created
,你应该把它放在mounted
在 created 钩子中,您将能够访问反应数据并且事件处于活动状态。模板和虚拟 DOM 尚未安装或渲染。
<template>
<div>
<div id='chart' ></div>
</div>
</template>
<script>
import * as d3 from 'd3'
export default {
name: 'priceChart',
data() {
return {
}
},
methods:{
createSvg(){
const svg =
d3.select('#chart').append('svg')
.attr('width',500)
.attr('height',400);
svg.append('rect')
.attr('x',0)
.attr('y',0)
.attr('width',500)
.attr('height',400)
.style('fill','red')
}
},
mounted(){
this.createSvg();
}
}
</script>
推荐阅读
- c# - 尝试将 IFormFile 上传到 Azure 时流已关闭
- php - PHP MySQL / WordPress 函数 / Ninja Forms
- testing - 将当前 URL 写入 TestCafe 中的控制台
- javascript - 当通过 mousemove 事件触发 ClientX 和 ClientY 时,它们的更新速度不够快。为什么?
- html - 如何使div向右浮动
- android - 在 Android 16 及更高版本上安全存储数据
- ios - 如何手动关闭 UIViewController.popoverPresentationController
- php - Symfony 创建一个搜索表单
- vb.net - 检查用户控件类型的问题
- excel - Excel:根据整个单元格值替换