Search code examples
reactjseventssynthetic

where does input to function come from


We have the following react html. In the callback function filterList() we have as a parameter 'input' filterList(input). Where does this object come from? Is this coming from the onClick event? what other objects are available?

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8" />

<title>Filtered List</title>
<script src="react/react.js"></script>
<script src="react/react-dom.js"></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>

<body>

<div id='container'></div>

<script type="text/jsx">

class FilteredList extends React.Component {

constructor(props) {
super(props);
var allItems = [ "anteater", "bear", "cat", "dog", "elephant", "fox" ];
this.state = { initialItems: allItems, currentItems: allItems };
}

filterList(input){
var updatedList = this.state.initialItems;
updatedList = updatedList.filter(function(item){
           return item.search(input.target.value) !== -1;
         });
this.setState({currentItems: updatedList});
}


render(){
 console.log(this);
return (
<div className="filter-list">
  <input type="text" placeholder="Filter" onChange={this.filterList.bind(this)}/>
  <List items={this.state.currentItems}/>
</div>
);
}
};

class List extends React.Component {
render(){
return (
<ul> { this.props.items.map(function(item) {
  return <li key={item}>{item}</li> }) }
</ul>
)
}
};

ReactDOM.render(<FilteredList/>, document.getElementById('container'));




</script>

</body>

</html>

Solution

  • Input has an onChange listener when something happens it gives parameter to the function of the onChange. Without this parameter the onChange parameter can't know what changed :)

    Few words: yes it comes from onChange

    More on here https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onchange