通过props和方法调用反应传递数据

时间:2015-01-22 20:15:26

标签: javascript reactjs

假设我有一个组件X,它呈现文本输入字段+子组件Y.Y使用输入字段中的文本来呈现其他内容。

要获取数据,X会从文本字段中侦听更改事件,然后通过引用获取更新的内容。

据我所知,我可以通过两种方式将数据传递给子Y.

1)X将新数据存储在其状态中,因此触发了渲染方法,在这里我使用<Y something={data}/>

之类的道具将数据传递给Y.

2)X通过像this.refs.y.setSomething(data)那样使用它来调用Y上的方法。在这种情况下,我不需要将数据存储在X状态。

除了在X中存储状态之外,选择其中一个的原因是什么?

1 个答案:

答案 0 :(得分:2)

您应该使用props将数据传递到子组件,如documentation中所示。您可以将props视为子组件的函数参数。

除了在React中这样做的惯用方法之外,我还能想到为什么要这样做的几个原因。首先,调用类似this.refs.y.setSomething(data)的方法意味着你需要实现用于在Y中存储状态的代码。所以你不必在X中设置状态,而是在Y中设置状态。

更重要的是,如果X由于某种原因在重新渲染期间卸下Y然后再重新安装它,你将在Y中丢失状态。但是如果你传递道具,那么Y会在之前和之前收到相同的道具在它卸下之后。