Files
Randell Dawson 1494a50123 fix(guide): restructure curriculum guide articles (#36501)
* fix: restructure certifications guide articles
* fix: added 3 dashes line before prob expl
* fix: added 3 dashes line before hints
* fix: added 3 dashes line before solutions
2019-07-24 13:29:27 +05:30

64 lines
1.4 KiB
Markdown

---
title: Bind 'this' to a Class Method
---
# Bind 'this' to a Class Method
---
## Problem Explanation
If a method on JavaScript `class` need to access some internal `state` of the instance, like `this.state`, the method need to be bound to the instance of the `class`. A more detailed description of 'this' binding can be found [here](https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch2.md)
---
## Hints
### Hint 1
Like many things in programming, there is more than one way to bind this. For this challenge we are going to stick with constructor binding.
```js
class MyClass {
constructor() {
this.myMethod = this.myMethod.bind(this);
}
myMethod() {
// whatever myMethod does
}
}
```
---
## Solutions
<details><summary>Solution 1 (Click to Show/Hide)</summary>
```jsx
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
itemCount: 0
};
// change code below this line
this.addItem = this.addItem.bind(this);
// change code above this line
}
addItem() {
this.setState({
itemCount: this.state.itemCount + 1
});
}
render() {
return (
<div>
{ /* change code below this line */ }
<button onClick={this.addItem}>Click Me</button>
{ /* change code above this line */ }
<h1>Current Item Count: {this.state.itemCount}</h1>
</div>
);
}
}
```
</details>