Skip to content

Instantly share code, notes, and snippets.

@kenwheeler
Last active April 8, 2018 21:03
Show Gist options
  • Save kenwheeler/f877eaa98bd5cf0c50cf725680950b53 to your computer and use it in GitHub Desktop.
Save kenwheeler/f877eaa98bd5cf0c50cf725680950b53 to your computer and use it in GitHub Desktop.
class Whatever extends React.Component {
constructor(props) {
super(props);
this.state = {
a: 5 + props.b;
};
this.offset = 0;
this.someEvent = this.someEvent.bind(this);
}
componentWillReceiveProps(nextProps) {
this.setState({
a: this.state.a + this.props.b + this.offset
});
}
someEvent(evt) {
this.offset += evt.clientX;
}
render() {
return <DoesntMatter/>
}
}
@bvaughn
Copy link

bvaughn commented Apr 8, 2018

Suggest something more like:

class Whatever extends React.Component {
  state = {
    a: 5 + this.props.b,
    offset: 0
  };

  static getDerivedStateFromProps(nextProps, prevState) {
    return {
      a: prevState.a + nextProps.b + prevState.offset
    };
  }

  someEvent = ({ clientX }) =>
    this.setState(prevState => ({
      offset: prevState.offset + clientX
    }));

  render() {
    return <DoesntMatter />;
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment