I've recently seen this type of react pattern where the state is being set in a render by using this.state:
class ShowMe extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            showButton: false,
        };
    }
    render() {
        if (this.props.show) {
            this.state.showButton = true; //setting state in render!!
        }
        return (
            <div>
                <div> Show or hide button </div>
                {this.state.showButton && <Button content='Btn'/>}
            </div>
        )
    }
}
This seems like an anti-pattern. Can this cause bugs? It seems to work properly though.
I would just use a component lifecycle to set the state:
class ShowMe extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            showButton: false,
        };
    }
    componentWillReceiveProps(nextProps) {
        if(nextProps.show) {
            this.setState({
                showButton: true,         
            })
        }
     }
    render() {
        return (
            <div>
                <div> Show or hide button </div>
                {this.state.showButton && <Button content='Btn'/>}
            </div>
        )
    }
}
What is the recommended way?
 
     
     
    