反应dropzone:如何将此作为参数代替道具?

时间:2018-03-21 18:27:09

标签: javascript reactjs

假设我有一个带有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)

1 个答案:

答案 0 :(得分:0)

这是因为在你的第二个例子中,你试图将this作为道具传递给MyDropzonethis指的是组件,但您应该传递数据对象。在第一个示例中,您将params作为对象传递,因此它可以正常工作。此外,在您的MyDropzone组件中,您不需要绑定props.onDrop,因为它应该已经绑定到您的父类组件Space