我有React组件,它呈现第3方HoC HotTable
。
HotTable
上有方法afterValidate
。
我将handleAfterValidate
函数传递给HotTable
。
问题是handleAfterValidate
应该有HotTable
个实例访问权限,同时可以访问HotTableWrapper
个实例(请参阅下面的代码)。
默认情况下,this
内的handleAfterValidate
指的是HotTable
个实例。
如果我将处理程序绑定到React实例,那么我将无法访问HotTable
实例,但我需要它们。
在这种情况下是否可以访问这两种情境?
class HotTableWrapper extends React.Component {
processCell(row, col) {
// do something
}
handleAfterValidate(row, prop) {
const col = this.propToCol(prop); // 'this' should refer to HotTable instance
this.processCell(row, col); // 'this' should refer to HotTableWrapper class instance
}
render() {
return (
<div>
<HotTable afterValidate={this.handleAfterValidate} />
</div>
);
}
}
答案 0 :(得分:2)
您可以使用currying功能方法。如果你有lodash在船上,那么你可以这样做:
class AsyncLauncher{
@Synchronized
protected fun execute(block: suspend CoroutineScope.() -> Unit): Job {
return launch(UI) { block() }
}
}
https://lodash.com/docs/4.17.4#curry 如果你没有lodash,只需谷歌如何实施帮助currying。
答案 1 :(得分:1)
这样做的一种方法是在HotTable
组件中直接定义processCell
代码,并将HotTableWrapper
作为范围传递给HotTable
。
所以在handleAfterValidate(wrapper, row, prop) {
const col = this.propToCol(prop);
this.props.processCell(row, col);
}
你会有
HotTableWrapper
和<HotTable processCell={this.processCell.bind(this)}/>
渲染方法
def user_func():
return 42
pickle.dumps({'function': user_func})