I attached a picture describing my question. I cannot understand what is a mechanism of sending this parameter. How is it possible, that React knows what value to send when we dont insert any parameter into calling function?
I really beg explanation, i am desperate from it. I need to understand that mechanism in order to do other things.
Here is a photo describing my problem:
Here is the WHOLE code (you can smoothly start it):
App.js:
import React, { Component } from "react";
import MyCheckbox from "./MyCheckbox";
const items = ["One", "Two", "Three"];
class App extends Component {
componentWillMount = () => {
this.selectedCheckboxes = new Set();
};
toggleCheckbox = label => {
if (this.selectedCheckboxes.has(label)) {
this.selectedCheckboxes.delete(label);
} else {
this.selectedCheckboxes.add(label);
}
for (const checkbox of this.selectedCheckboxes) {
console.log(checkbox, "is selected.");
}
};
createCheckbox = label => (
<MyCheckbox
label={label}
handleCheckboxChange={this.toggleCheckbox}
key={label}
/>
);
createCheckboxes = () => items.map(this.createCheckbox);
render() {
return (
<div className="container">
<div className="row">
<div className="col-sm-12">{this.createCheckboxes()}</div>
</div>
</div>
);
}
}
export default App;
MyCheckbox.js:
import React, { Component } from "react";
class MyCheckbox extends Component {
state = {
isChecked: false
};
toggleCheckboxChange = () => {
const { handleCheckboxChange, label } = this.props;
this.setState(({ isChecked }) => ({
isChecked: !isChecked
}));
handleCheckboxChange(label);
};
render() {
const { label } = this.props;
const { isChecked } = this.state;
return (
<div className="checkbox">
<label>
<input
type="checkbox"
value={label}
checked={isChecked}
onChange={this.toggleCheckboxChange}
/>
{label}
</label>
</div>
);
}
}
export default MyCheckbox;