Let's say I have the following render function on one of my components.
From the parent element I have passed a changeTid
prop function.
Parent:
<RequestsList data={this.state.data} changeTid={this.changeTid} />
Child:
(I'm using ES6 classes)
render() {
var RequestNodes = this.props.data.map(function(request) {
return (
<Request
key={request.TID}
changeTid={this.props.changeTid}
/>
);
});
return (
<div className="list-group">{RequestNodes}</div>
);
}
I can't use this.props.changeTid
in my map function as this
is not referencing what I wan't. Where do I bind it so I can access my props
?
In React, the map method is used to traverse and display a list of similar objects of a component. A map is not a feature of React. Instead, it is the standard JavaScript function that could be called on an array. The map() method creates a new array by calling a provided function on every element in the calling array.
The "Each child in a list should have a unique "key" prop." warning happens in React when you create a list of elements without the special key attribute. Keys must be assigned to each element in a loop to give stable identity to elements in React. The key is used to correctly link the component to the DOM element.
You can set this
for .map
callback through second argument
var RequestNodes = this.props.data.map(function(request) {
/// ...
}, this);
or you can use arrow function which does not have own this
, and this
inside it refers to enclosing context
var RequestNodes = this.props.data.map((request) => {
/// ...
});
If you're using ES6 you can use arrow functions which doesn't bind its own this
var RequestNodes = this.props.data.map(request => {
return (
<Request
key={request.TID}
changeTid={this.props.changeTid}
/>
);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With