Accepted answer

Without the full code, we can't tell what's wrong but it is obvious that following_status comes asynchronously to the component and that's why is not accessible right away in the constructor.

To somehow fix it you can detect if props have changed and reset state accordingly in componentDidUpdate.

class RelationButton extends React.Component {

    console.log(props.user.following_status) #  undefined!!!

    this.state = {
      following_status: props.user.following_status

  componentDidUpdate(prevProps) {
    if(prevProps.user.following_status !== this.props.user.following_status) {
      this.setState({ following_status: this.props.user.following_status })

  render() {
     // you forgot about return statements :
     if (this.state.following_status == 'following') {
       return <UnFollowBtn/>
     } else {
       return <FollowBtn/>

Related Query

More Query from same tag