Edit:
The question referred to as the duplicate doesn't really answer why arrow functions shouldn't be used to access a non-lexical this. It just answers that arrow functions automatically bind this. My situation is that using an arrow function rather than a normal function cause me to lose the correct reference of this. If you need this
outside of the current scope, use a normal function.
I've searched around for a solution to my problem with no luck. Even if I was pointed in the right direction as to what I needed to do would be awesome! My problem essentially is that this.Favkey
is undefined here:
const setFavorite = val => {
console.log(this);
this.Favorite = val;
AsyncStorage.setItem(this.Favkey, JSON.stringify(val));
};
This function is getting assigned to a particular object like so:
for (const obj of objArray) {
obj.Favkey = `c${obj['-id=']}`;
obj.Favorite = await getFavorite(obj.Favkey);
obj.SetFavorite = setFavorite;
}
And then I am calling this later on a button:
onPress={val => props.myObj.SetFavorite(val)}
In the first block of code, I want this
to be the specific obj
that I am attempting to enclose the function on. But this.Favkey
in setFavorite
is undefined. What is printed out instead on console.log(this)
is what I think is the whole prototype of Object
. So I'm not quite sure what I'm doing wrong here.