javascript - 如何创建 react-chartjs 插件
问题描述
我为饼图聊天创建了一个插件。该插件的想法是将数据集中在甜甜圈的中间。
const [data1, setData1] = useState()
const [plugins, setPlugins] = useState([])
const dashboardInfo = useSelector((state) => state.dashboardInfo.data);
useEffect(() => {
const xxxNE = dashboardInfo.division ? Object.values(dashboardInfo.division[0]) : [''];
const sikPercentage = xxxNE[1] ? xxxNE[1][0].percentage : ''
const trPercentage = xxxNE[1] ? xxxNE[1][1].percentage : ''
setData1({
labels: [ // legend labels
"SIK: " + sikPercentage + '%',
"TR: " + trPercentage + '%'
],
datasets: [{
label: '# of Votes',
data: [2, 3],
backgroundColor: [
'#fb6340',
'rgba(54, 162, 235, 0.5)',
],
borderColor: ['#fff', '#fff'],
borderWidth: 2,
cutout: '90%',
}]
})
setPlugins([{
beforeDraw: function (chart) {
var width = chart.width,
height = chart.height,
ctx = chart.ctx;
ctx.restore();
var fontSize = (height / 180).toFixed(2);
ctx.font = fontSize + "em Montserrat";
ctx.textBaseline = "top";
ctx.textAlign = 'center';
ctx.fillText(40 + ' / ' + sikPercentage + '%', width / 2, height / 2);
ctx.save();
}
}])
}, [dashboardInfoData, setData1, setPlugins])
return (
<Doughnut
data={data1}
plugins={plugins}
options={{
legend: false,
legendCallback: function (circleData) {
var ul = document.createElement('ul');
var borderColor = circleData.datasets[0].borderColor;
var dataValue = circleData.datasets[0].data;
circleData.data.labels.forEach(function (label, index) {
ul.innerHTML += `
<li>
<span style="background-color: ${borderColor[index]}
";></span> ${label} ${dataValue[index]}
</li>
`;
});
return ul.outerHTML;
},
}
}
/>
问题是插件没有显示数据。知道我缺少什么吗?
谢谢
解决方案
推荐阅读
- node.js - 查询嵌套数组
- c - 试图建立一个以字符串为条目的链表
- excel - Excel time changes to previous day after copy/pasting from an equation
- python - 用于从两端删除非 ASCII 字符的正则表达式
- python - 如何修复Tensorflow中的“ValueError:操作数无法与形状(2592,)(4,)一起广播”?
- apache-kafka - 在 micronaut 应用程序中嵌入 Kafka 找不到 bean
- java - 文字的定义(Java)
- python - 从解析树构建表达式树
- node.js - 为类似 Twitch.tv 的产品设置条带订阅
- pyspark - 返回满足一个条件的数据帧的行,同时修复另一列的值