【问题标题】:How to access the state of a component form another component in react-native?如何在 react-native 中从另一个组件访问组件的状态?
【发布时间】:2019-07-17 08:48:45
【问题描述】:

我正在使用geolocation API 访问位置数据并将其存储在名为Location.js 的组件的状态中,但我想从不同的独立组件访问状态,例如Slider.js。访问状态的最简单和最快的方法是什么?我是beginner。任何帮助将不胜感激。即,如何在某种意义上使状态“全局”,因为除了Slider 之外,我还有一些其他组件想要访问Location 的状态。 有 10 个组件将使用 Location.jslocation state,然后我必须使用位置数据和来自 Slider 的一些数据执行 POST 操作。

我做了一些研究-

  • 有些人建议通过 props 发送状态数据,但我从不在 Location 组件中使用 Slider 组件。如果可以,请详细说明。

  • 我在某个地方找到了有关redux 的信息,它有什么帮助?我如何决定我真的需要它?如果是,谁能简要解释一下如何?

【问题讨论】:

    标签: android react-native redux state setstate


    【解决方案1】:

    您所问的问题并非特定于 React Native,但可能是关于使用 ReactJS 编写的常规 Web 应用程序的问题(我这么说是因为在更大的 ReactJS 社区中通常更容易找到教程等)

    话虽如此,您有两个选择:

    1. 由于您的组件是独立的,您可以考虑创建一个包装组件,通常称为高阶组件 (HOC),它将包含这两个组件。您应该在 HOC 组件中存在地理定位调用,并通过 props 将其发送到任何需要它的子组件。
    2. 使用状态管理工具 - Redux 是 React 世界中最流行的状态管理工具,但它不是唯一的。另一个非常流行的是 MobX。您可以将状态管理工具想象成覆盖整个应用程序的雨伞。无论您的应用程序的父子结构是什么,您都可以在任何组件中访问存储在 Redux 中的状态。 Redux 被认为有一个复杂的引导程序,如果您决定尝试一下,我强烈建议您参加 Egghead.io 上的这个免费课程:https://egghead.io/courses/getting-started-with-redux 这门课程是由 Redux 的实际创建者 Dan Abramov 创建的 :)李>

    我希望这会有所帮助;)

    【讨论】:

    • 谢谢。我的应用程序大小适中。您认为添加redux 是不必要的额外工作量还是有益的?因为我时间紧迫,所以我必须先学习redux...所以如果还有其他方法吗?
    • 如果你时间紧迫,我会说尝试构建一个 HOC,如果有一种合乎逻辑的方式让你的组件有一个共同的父级放置在离它们实际位置不远的地方用过的。但只要你有更多的时间,我建议你学习 Redux。添加 Redux 后,您无需重构您的应用程序,只需随时随地添加即可。
    • 你能告诉我一些关于 HOC 的资源吗?
    • 您可以在 ReactJS 官方文档中阅读这篇文章:reactjs.org/docs/…,或者您可以编写一个常规组件,作为 Location.js 和 Slider.js 的父级并传递必要的 props。
    【解决方案2】:

    您好,我的意见是不要使用 Redux 和其他状态管理库进行中小型应用程序开发。

    • Redux 用于为中小型构建大型应用程序,没有必要。

    • 要访问位置数据,您可以将其设置为服务文件并在任何地方访问此数据。

    【讨论】:

    • 我有亲身体验,我在一个项目中使用过。
    【解决方案3】:

    通常,Redux 太过分了,而且学习曲线陡峭。你可以看看XSM。它很容易拿起并且不会妨碍您。将满足您跨组件共享数据等需求。

    【讨论】:

      猜你喜欢
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2017-07-11
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多