2017-05-05 145 views
3

我学习通过在线课程反应,跨越如果一个属性附加到其他财产,像这样的情况都有所涉猎:React.js:传递道具给道具?

this.props.property01(this.props.property02) 

看到,因为导师只简单地解决了这一行的代码,我不能不仍然百思不得其解至于这个“连接”语法实际上代表什么,即它在幕后造成了什么。来自Vanilla JS,它看起来像property02被用作property01的参数,但这似乎太简单的答案。话虽如此,我很理解其余的代码。

为了提供一些上下文,我创建了这个codepen,其中我提到的问题由this.props.onDelete(this.props.whichItem);给出。

鉴于我找不到任何相关的问题,我将不胜感激这方面的一些有见地的阐述。

+0

是的。它看起来像'property2'是'property1'的一个参数,为什么不呢?只要你可以像这样的道具发送函数' this.deleteItem} />' P.S.通过道具时避免绑定https://daveceddia.com/avoid-bind-when-passing-props/ –

回答

2

React组件的属性可以是函数。当我看到:

this.props.property01(this.props.property02) 

我认为:

  • this.props.property01是一个函数。
  • this.props.property02作为参数传递给函数。

这意味着该组件将被用作:

<SomeComponent property01={(a) => { /* so something with "a" ... */ } property02={"someValue"} /> 

如果property02仅用于传递给property01,没有别的我宁愿是这样的:

<SomeComponent property01={(a) => { /* do something with "someValue" ... */ } /> 

哪意味着不需要名为poperty02的房产。

+0

谢谢!这真的有助于:) – gnzg

1

香草JS即将看起来property02被用作论据property01

就是这样,你是正确的。

this.props.property01(this.props.property02)

property01是一种方法,property02,争论。

为别人看着这个

的较详细的解释:

假设这条线是在一个名为MyComponentproperty01成分是MyComponent道具。

父组件的render()方法,将包含这样的事情:

<MyComponent property01={this.someMethod.bind(this)} /> 

someMethod属于该母公司组件,但它作为MyComponentproperty01(子组件)变为可用。