假设我有一个带有onDrop的组件类
=COUNTIF(B6:B15,">" & C1)
在class Space extends Component {
constructor(){super()}
onDrop(){this.setState({...})}
render(
const params = { onDrop:this.onDrop.bind(this)}
return(
<div>{MyDropzone(params)}</div>
);
}
:
MyDropzone
这很有效。
但是,只要我将const MyDropzone = props =>(
<div><Dropzone ... onDrop={props.onDrop.bind(this)} ...>
...
</Dropzone>
</div>
)
替换为this
,就会失败并显示错误:params
不是函数:
this.setState(...)
所以似乎有一个双class Space extends Component {
constructor(){super()}
onDrop(){this.setState({...})}
render(
const params = { onDrop:this.onDrop.bind(this)}
return(
<div>{MyDropzone(this)}</div>
);
}
正在进行,我不确定为什么我需要执行两个绑定。为什么我不能直接从组件中传递bind(this)
?
答案 0 :(得分:0)
这是因为在你的第二个例子中,你试图将this
作为道具传递给MyDropzone
。 this
指的是组件,但您应该传递数据对象。在第一个示例中,您将params
作为对象传递,因此它可以正常工作。此外,在您的MyDropzone
组件中,您不需要绑定props.onDrop
,因为它应该已经绑定到您的父类组件Space
。