我有一个函数,它位于我的一个React组件中,它开始变得有点长。我决定将它保存在一个单独的文件中,以保持我的组件更整洁。问题是组件必须引用this
才能获得通过Redux映射到props的函数和状态。以下是我在我的组件中调用它的方式:
import {myFunction} from './functions/myFunction';
handleMyFunction(event) {
myFunction(event).bind(this)
}
componentDidMount() {
this.handleMyFunction()
}
以下是' ./ functions / myFunction'中的函数本身:
export const captureSnapshot = (event) => {
console.log(this.props.someState)
}
我原以为绑定this
会使所有道具在导入的函数中可用,但我得到:
无法阅读属性'道具'未定义的
当我尝试运行该功能时。我怎样才能通过"这个"功能正常吗?
答案 0 :(得分:1)
您无法在函数执行中使用bind
此行错误
myFunction(event).bind(this)
而是使用apply
或call
示例myFunction.call(this , event)
或myFunction.apply(this , [event])
您可以详细了解' bind',' call'和' apply'之间的区别在此answer
另外还有一项修改,您可能会将此功能handleMyFunction
与this
上下文设置错误,因此请将其更改为
handleMyFunction = (event) => {
myFunction.call(this , event)
}