Tengo un ejemplo que me parece idéntico al ejemplo dado en los documentos de Mozilla
const foo = (dispatch) => { return { name: "Personal Files", onSelect: function() { dispatch({ type: MoveDocActionType.ENTER_PARTITION, partitionName: this.name }) } } } console.log(foo(({type, partitionName})=>console.log(partitionName)).onSelect()) // Expected output "Personal Files"El ejemplo de documentos de Mozilla:
const test = { prop: 42, func: function() { return this.prop; }, }; console.log(test.func()); // expected output: 42 Sin embargo, durante la ejecución real, this no está definido en mi caso. Lo que me estoy perdiendo, ya que esto parece ser idéntico a los documentos, así que no veo por qué tendría que llamar manualmente a bind o algo así.
EDITAR: Encontré la respuesta aquí
La forma en que realmente estaba llamando al método estaba más cerca de esto:
const foo = (dispatch) => { return { name: "Personal Files", onSelect: function() { dispatch({ type: MoveDocActionType.ENTER_PARTITION, partitionName: this.name }) } } } const bar = foo(({type, partitionName})=>console.log(partitionName)).onSelect console.log(bar() // Expected output "Personal Files"Si elimina el primer console.log, funciona para mí:
<script type="text/javascript"> const foo = (dispatch) => { return { name: "Personal Files", onSelect: function() { dispatch({ type: "Toto", partitionName: this.name }) } } } foo(({type, partitionName})=>console.log(partitionName)).onSelect() </script>