I'm trying to do a simple fetch through the componentDidMount lifecycle method. However, the result does not appear on the page as it should unless I have a one second timeout. I've gathered it's due to the async nature of the fetch, but how can I fix that without having to use setTimeout? Would componentDidUpdate work/how would you use it?
      constructor(props) {
        super(props);
        this.state = { value: '' };
        this.getValue= this.getValue.bind(this);
      }
        getValue() {
            return (
                fetch(url, {
                    method: 'GET',
                }).then(response => {
                    if (response.status >= 400) {
                        throw new Error('no response: throw');
                    }
                    return response.json()
                }).then(response => {
                    this.setState({value: response});
                }).catch((error) => {
                    this.setState({
                        value: 'no response: catch'
                    })
                })
            );
        }
    componentDidMount(){
        //this.getValue(); //does not work
        setTimeout(() => this.getValue(), 1000); //this works & populates page
    }
    render() {
            return (
                  <div>
                     <div>{this.state.value}</div>
                  </div>
            )
    }
 
    