从它的兄弟组件中调用一个方法

时间:2018-01-18 11:49:19

标签: reactjs react-native

结构

ScreenContainer.js
|
|---Header.js
|     |---LogoButton.js
|
|----FeedContainer.js
      |---Feed.js

我在FlatList

中有一个Feed.js

单击LogoButton时,我想scrollToOffset() Feed

ref的{​​{1}}仅存在于FlatList

如何从Feed.js

调用Feed.js方法

编辑:我尝试将LogoButton.js存储在Redux中,但它导致多个事件发送和ref错误

2 个答案:

答案 0 :(得分:1)

这里可能有多个解决方案,但可能因为您使用的是Redux,您可以执行以下操作:

  1. 按下徽标时从Logo.js发送操作,将某些状态变量isLogoPressed设置为true。
  2. FeedContainer.js向商店注册,并将isLogoPressed道具传递给Feed.js
  3. Feed.js的{​​{3}}生命周期方法中检查isLogoPressed是否为真并触发ScrollToOffset()函数。
  4. 一旦完成,可能会发出将isLogoPressed重置为false的操作。
  5. 无论您使用何种屏幕,无论何时按下徽标,都可以灵活地进行自定义行为。

    希望这有帮助。

答案 1 :(得分:0)

您可以在按钮中使用回调函数,只需通过道具传递函数并调用它。

实施例: 在饲料上

<LogoButton callback={this.scrollToOffset} />
按钮中的

只需使用onPress={this.props.callback()}