在哪里实施重复逻辑,如在RN中共享图像?

时间:2017-10-29 20:06:58

标签: react-native redux react-redux

用户可以在我的应用中共享图片。这可以通过长按列表项或单击详细信息屏幕中的按钮来完成,该按钮在单击列表项后显示。

对于rows(list-items),我有一个自己的容器和详细信息屏幕。

我应该在哪里放置共享逻辑?共享可以替换为我在应用程序中使用的任何其他操作而不会影响redux商店。

  • 在Google地图或Apple地图中打开地址
  • 拨打电话号码
  • 将图像保存到设备存储
  • ...

目前我看到三个选项:

动作,中间件,助手类

但最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

我现在正在做的是我有一个BaseComponent扩展了正常的React Native组件,然后我让所有其他组件扩展我的BaseComponent而不是常规RN组件。

通过这种方式,我可以共享我通常使用的功能,例如获取合成样式,对链接,弹出窗口等操作做出反应。

如果您有很多属于特定类别的代码/函数,那么是的,我创建另一个Helper,BaseComponent保存对该帮助程序的引用。

所以,当我需要它时,我知道我可以调用类似this.getHelper()的东西,任何组件都可以访问该帮助器或函数。

答案 1 :(得分:-1)

您应该将它们放在 高阶组件(HOC) 中,并使用它来装饰具有这些功能的组件。

@shareable
class ImageItem extend React.Component {
  render() {
    const {handleShare} = this.props // injected by @shareable
    const {imgSrc} = this.props
    return(
      <div>
        <img src={imgSrc}/>
        <button onClick={handleShare}>Share</button>
      </div>
    )
  }
}

这种反应模式非常适合为组件创建可重用的数据/行为模型。