Javascript 反应&;Progressbar.js:自定义形状的进度圈
我发现这个很酷的加载进度项目在和中可用。在它们的底部,它们有一个.svg图片(心形)形状的进度加载圆。我想对custom.svg和in-React执行同样的操作,但我很难得到一个有效的示例。我用npm安装了它,但是如何导入和使用它呢Javascript 反应&;Progressbar.js:自定义形状的进度圈,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我发现这个很酷的加载进度项目在和中可用。在它们的底部,它们有一个.svg图片(心形)形状的进度加载圆。我想对custom.svg和in-React执行同样的操作,但我很难得到一个有效的示例。我用npm安装了它,但是如何导入和使用它呢 // import import progressBar from 'react-progressbar.js'; // or like in their outdated example? // var ProgressBar = require('react
// import
import progressBar from 'react-progressbar.js';
// or like in their outdated example?
// var ProgressBar = require('react-progressbar.js')
。。。
//为什么progressBar.Circle,我不能直接从包中导入Circle吗?
var Circle=进度条圆;
让选项={
冲程宽度:2,
};
让集装箱式={
宽度:“200px”,
高度:“200px”,
};
...
返回(
);
在我得到错误的那一刻:
错误:元素ref被指定为字符串(progressBar),但没有
主人被安排好了
如果有人能给出一个如何使用react-progressbar.js的最简单的工作示例,那就太好了
如果没有太多的代码就可以很容易地使用,我也愿意接受其他选择。
提前感谢。该软件包有点过时,因此它基于旧版本的react,允许引用为简单字符串。react的较新版本(您可能正在使用的版本)不再允许这样做,因此出现了错误 见: 你应该:
import { Circle } from 'progressbar.js'
export default class CircleProgress extends React.Component<Props, State> {
componentDidMount() {
var bar = new Circle('#container', {easing: 'easeInOut'});
bar.animate(1);
}
render() {
return (
<div id="container"></div>
)
}
}
从'progressbar.js'导入{Circle}
导出默认类CircleProgress扩展React.Component{
componentDidMount(){
var bar=新的圆(“#容器”{easeInOut'});
动画(1);
}
render(){
返回(
)
}
}
该包有点过时,因此它基于旧版本的react,该版本允许引用为简单字符串。react的较新版本(您可能正在使用的版本)不再允许这样做,因此出现了错误
见:
你应该:
import { Circle } from 'progressbar.js'
export default class CircleProgress extends React.Component<Props, State> {
componentDidMount() {
var bar = new Circle('#container', {easing: 'easeInOut'});
bar.animate(1);
}
render() {
return (
<div id="container"></div>
)
}
}
从'progressbar.js'导入{Circle}
导出默认类CircleProgress扩展React.Component{
componentDidMount(){
var bar=新的圆(“#容器”{easeInOut'});
动画(1);
}
render(){
返回(
)
}
}
@gbalduzzi的答案是正确的,并且被接受。
我仍然想发布一个带有自定义.svg图像的完整工作示例:
import React from 'react';
import ProgressBar from 'progressbar.js';
export default class CustomProgressShape extends React.Component {
componentDidMount() {
var svgPath = document.getElementById('heart-path');
var path = new ProgressBar.Path(svgPath, {
easing: 'easeInOut',
duration: 5000,
step: function(state, circle) {
if (circle.value() === 1) {
circle.set(0);
circle.animate(1.0);
}
},
});
path.set(0);
path.animate(1.0);
}
render() {
return (
<>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0px" y="0px" viewBox="0 0 100 100">
<path
fill-opacity="0"
stroke-width="0.5"
stroke="#f4f4f4"
d="M81.495,13.923c-11.368-5.261-26.234-0.311-31.489,11.032C44.74,13.612,29.879,8.657,18.511,13.923 C6.402,19.539,0.613,33.883,10.175,50.804c6.792,12.04,18.826,21.111,39.831,37.379c20.993-16.268,33.033-25.344,39.819-37.379 C99.387,33.883,93.598,19.539,81.495,13.923z"
/>
<path
id="heart-path"
fill-opacity="0"
stroke-width="0.6"
stroke="#555"
d="M81.495,13.923c-11.368-5.261-26.234-0.311-31.489,11.032C44.74,13.612,29.879,8.657,18.511,13.923 C6.402,19.539,0.613,33.883,10.175,50.804c6.792,12.04,18.826,21.111,39.831,37.379c20.993-16.268,33.033-25.344,39.819-37.379 C99.387,33.883,93.598,19.539,81.495,13.923z"
/>
</svg>
<div id="container"></div> <div id="heart-path2"></div>
</>
);
}
}
从“React”导入React;
从“ProgressBar.js”导入ProgressBar;
导出默认类CustomProgressShape扩展React.Component{
componentDidMount(){
var svgPath=document.getElementById('heart-path');
var path=newprogressbar.path(svgPath{
放松:“放松”,
持续时间:5000,
步骤:功能(状态、循环){
if(circle.value()==1){
圆集(0);
圆。动画(1.0);
}
},
});
路径集(0);
路径。动画(1.0);
}
render(){
返回(
);
}
}
@gbalduzzi的答案是正确的,并且被接受。
我仍然想发布一个带有自定义.svg图像的完整工作示例:
import React from 'react';
import ProgressBar from 'progressbar.js';
export default class CustomProgressShape extends React.Component {
componentDidMount() {
var svgPath = document.getElementById('heart-path');
var path = new ProgressBar.Path(svgPath, {
easing: 'easeInOut',
duration: 5000,
step: function(state, circle) {
if (circle.value() === 1) {
circle.set(0);
circle.animate(1.0);
}
},
});
path.set(0);
path.animate(1.0);
}
render() {
return (
<>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0px" y="0px" viewBox="0 0 100 100">
<path
fill-opacity="0"
stroke-width="0.5"
stroke="#f4f4f4"
d="M81.495,13.923c-11.368-5.261-26.234-0.311-31.489,11.032C44.74,13.612,29.879,8.657,18.511,13.923 C6.402,19.539,0.613,33.883,10.175,50.804c6.792,12.04,18.826,21.111,39.831,37.379c20.993-16.268,33.033-25.344,39.819-37.379 C99.387,33.883,93.598,19.539,81.495,13.923z"
/>
<path
id="heart-path"
fill-opacity="0"
stroke-width="0.6"
stroke="#555"
d="M81.495,13.923c-11.368-5.261-26.234-0.311-31.489,11.032C44.74,13.612,29.879,8.657,18.511,13.923 C6.402,19.539,0.613,33.883,10.175,50.804c6.792,12.04,18.826,21.111,39.831,37.379c20.993-16.268,33.033-25.344,39.819-37.379 C99.387,33.883,93.598,19.539,81.495,13.923z"
/>
</svg>
<div id="container"></div> <div id="heart-path2"></div>
</>
);
}
}
从“React”导入React;
从“ProgressBar.js”导入ProgressBar;
导出默认类CustomProgressShape扩展React.Component{
componentDidMount(){
var svgPath=document.getElementById('heart-path');
var path=newprogressbar.path(svgPath{
放松:“放松”,
持续时间:5000,
步骤:功能(状态、循环){
if(circle.value()==1){
圆集(0);
圆。动画(1.0);
}
},
});
路径集(0);
路径。动画(1.0);
}
render(){
返回(
);
}
}
非常好而且有用的答案。我试过你的代码,效果很好。谢谢你的帮助!非常好而且有用的答案。我试过你的代码,效果很好。谢谢你的帮助!美好的这绝对是有用的好!这绝对有用