Без кода сложно ответить, особенно потому, что мы не знаем, как построен ваш Компонент.
В любом случае, я просто "попробовал и гость": дайте мне знать, если это поможет вам:
class ProgressBar extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="progressBar">
<div
className="currentProgress"
style={{width: `calc(${this.props.value}%)`}}/>
</div>
);
}
}
class App extends React.Component {
interval;
constructor(props) {
super(props);
this.state = {value: 75};
}
componentDidMount() {
this.interval = setInterval(() => {
this.setState({ value: Math.floor(Math.random() * (75-65+ 1) + 65)});
}, 500)
}
componentWillUnmount() {
clearInterval(this.interval);
}
render() {
return <ProgressBar value={this.state.value} />
}
}
ReactDOM.render(<App />, document.getElementById('root'));
@import url(https://fonts.googleapis.com/css?family=Montserrat);
body {
font-family: 'Montserrat', sans-serif;
}
.progressBar {
width: 500px;
height: 50px;
background: #FDE9EC;
border-top-right-radius: 15px;
border-bottom-right-radius: 15px;
}
.currentProgress {
height: inherit;
background: linear-gradient(to bottom, #33ccff 0%, #ff99cc 100%);;
border-top-right-radius: inherit;
border-bottom-right-radius: inherit;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='root'></div>
Как видите, это довольно просто: ProgressBar
Компонент рендерит два div
с. Первый - это индикатор выполнения, в то время как внутренний div
- текущий прогресс, заданный значением, переданным как props
.
Для границы, поскольку у нас есть родительская / дочерняя иерархия, мы можем использовать inherit
значение CSS.