1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import React from "react";
- const PropTypes = React.PropTypes;
- var styles = {
- container: {
- bottom: 0,
- fontSize: "55px",
- left: 0,
- position: "fixed",
- right: 0,
- top: 0
- },
- content: {
- marginTop: "30px",
- position: "absolute",
- textAlign: "center",
- width: "100%"
- }
- };
- class Loading extends React.Component {
- constructor(props, context, updater) {
- super(props, context, updater);
- this.originalText = props.text;
- this.state = {
- text: this.originalText
- };
- }
- componentWillMount() {
- const stopper = `${this.originalText}...`;
- this.interval = setInterval(() => {
- if (this.state.text === stopper) {
- // Usually: avoid setState in cDM, because it causes a re-render.
- this.setState({
- text: this.originalText
- });
- }
- else {
- this.setState({
- text: `${this.state.text}.`
- });
- }
- }, this.props.speed);
- console.log("Loading: cDM", this.interval);
- }
- componentWillUnmount() {
- console.log("Loading: cWU", this.interval);
- clearInterval(this.interval);
- }
- render() {
- console.log("Loading: render");
- return (
- <div style={styles.container}>
- <p style={styles.content}>{this.state.text}</p>
- </div>
- );
- }
- }
- Loading.defaultProps = {
- speed: 300,
- text: "Loading"
- };
- Loading.propTypes = {
- speed: PropTypes.number,
- text: PropTypes.string
- };
- export default Loading;
|