how to re render a component in react

Viewed 29

How to force re render a component in react ? I think this.forceUpdate(); re render Viewer Component, but it s not working. In fact, I need to reload the page if I want to get the localStorage urn for docUrn.

class Test extends React.Component {
    constructor(props) {
        super(props);
        this.setState({value: localStorage.getItem('urn')});
        this.state = {
            urn: localStorage.getItem('urn') || null,
        };
    }
    // check every 2s if urn is updated
    componentDidMount() {
        setInterval(() => {
            if (this.state.urn !== localStorage.getItem('urn')) {
                this.setState({urn: localStorage.getItem('urn')});

                if (this.state.urn === "urn:null") {
                    notify('Please select another model', 'error', 1000);
                } else {
                    notify('Model changed', 'success', 1000);
                    //this.forceUpdate() not working
                    //window.location.reload()

                    this.forceUpdate();
                }
            }
            
        }, 2000);        
    }

    render() {
        return (
            <Viewer
                getToken={renewExpiredToken}
                //re render viewer with new urn for docUrn               
                docUrn={
                    this.state.urn
                    
                }
            />
        );
    }
}
0 Answers
Related