React Native:放置全局状态变量的位置

文斯·卡特

我正在开发我的第一个React Native,再次需要一些帮助。我的应用程序具有一种状态-运动,这对于组件,屏幕等非常重要。因此,选择的运动也将加载不同的样式,图像和api信息。将有一种模式,用户可以从中更改运动。现在,模态是Header组件的一部分,Header组件是Screen组件的一部分。

所以我的问题是如何或在何处放置此运动状态变量,以便我可以在任何地方进行访问并进行更改以更新新样式等。

该应用程序的概述如下:

App.js

    import AppContext from './utility/context';
    
    export default function App() {
        
          const [sport, setSport] = React.useState('soccer');
          const state = {sport, setSport};
        
          return (
             <AppContext.Provider sport={state}>
                <OfflineNotice />
                <Screen />
             </AppContext.Provider>
          );
        }

context.js

import React from "react";

export const AppContext = React.createContext({
    sport: 'soccer', 
    setSport: () =>{}
});

Screen.js

export default function Screen ({children}) {
    return (
        <>
        <Header />
        <SafeAreaView style={styles.screen}>
            <View style={styles.container}>{ children }</View>
        </SafeAreaView>
        <TabNavigator i18n={i18n}/>
        </>
    );
}

在Header.js中,我还将使用该将来状态,但是目前没有任何有趣的事情。但是这里是视图,用户可以从中更改运动状态变量。

HomeScreen.js-这是TabNavigator的第一个屏幕

export default function HomeScreen({ navigation }) {

  const today = Moment(new Date().getTime()).format('YYYY-MM-DD');
  const [predictions, setPredictions] = useState([]);
  const [loading, setLoading] = useState(true);
  const params = {
    lang: 'en',
    date: today,
    sport: 'soccer',
  };

  ...

}

这里的运动状态是硬编码的,因为我还不知道如何进行。

我听说过Redux,但还没有使用过,因此,如果有不使用Redux的解决方案,我将不胜感激。

先感谢您!

古拉帕兰·吉里塔兰(Guruparan Giritharan)

您可以使用React-Context实现此目的

您可以简单地在app.js中有一个状态,并使用上下文在应用中需要的任何位置访问它。

首先,您需要创建上下文。最好是单独的文件

const AppContext = React.createContext({sport:'value',setSport=()=>{}});

这里的默认值是选项,但是在您使用打字稿以避免警告时尤其适用。

现在,您必须像下面这样在app.js中使用它

export default function App() {
  const [sport,setSport] = React.useState('value');
  
  const state={sport,setSport};
  ...

  return (
    <AppContext.Provider value={state}>
      <OfflineNotice />
      <Screen />
    </AppContext.Provider>
  );
}

您将必须导入上下文并将提供程序用作包装程序,以从您所拥有的本地状态中设置值。现在,您可以在树中的任何位置访问此文件,并根据需要对其进行修改。

//使用useContext钩子访问上下文,此组件应该在树中,并且您应该导入AppContext

const {sport,setSport} = useContext(AppContext);

您可以如下所示

<Text>{sport}</Text>

或像下面这样设置

<Button title="Set Value" onPress={()=>{setSport('value')}}>

这个例子只是一个字符串,但是你甚至可以有一个对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

保持对React状态变量的“引用”

来自分类Dev

如何在React Native中访问类外部的类的状态变量?

来自分类Dev

关于如何在render()中引用状态变量的真正快速的问题-React Native

来自分类Dev

React Native:使用状态变量的“ TypeError:未定义不是对象”

来自分类Dev

React Native - 在静态函数中使用状态变量

来自分类Dev

如何在 React Native 的导航项中使用状态变量

来自分类Dev

在指定时间后修改React状态变量

来自分类Dev

React:如何通过匹配另一个状态变量的值来修改状态变量

来自分类Dev

React Native发布文字字符串有效,但发布状态变量失败

来自分类Dev

React / JSX:我可以在另一个状态变量中使用一个状态变量吗?

来自分类Dev

React Developer Tool是否可能显示使用useState创建的状态变量的名称?

来自分类Dev

如何在React Route的父级中设置状态变量?

来自分类Dev

ComponentWillUnmount是否等效于可访问状态变量当前值的React Hooks?

来自分类Dev

如何在React中更新数组中的状态变量?

来自分类Dev

在React中,setState回调和对状态变量使用useEffect有什么区别?

来自分类Dev

React中的Material-Table。使用状态变量动态设置表选项

来自分类Dev

React组件将状态变量作为参数,未在更新时呈现

来自分类Dev

使用useState react钩子后返回的状态变量显示.map不是函数

来自分类Dev

根据状态变量的变化,在react中显示多个动态输入字段?

来自分类Dev

根据React功能组件中的状态变量有条件地设置className

来自分类Dev

在react redux和saga中调度完成后获取状态变量?

来自分类Dev

什么时候应该使用MobX可观察的代替React状态变量?

来自分类Dev

在 react-redux 中同步查询参数和状态变量

来自分类Dev

React 使用对象值作为状态变量名

来自分类Dev

当更新它们基于的状态变量时,为什么这些表行在React中不重新呈现?

来自分类Dev

如何将带有状态变量的 jsx 导入另一个 React 组件?

来自分类Dev

迭代状态变量

来自分类Dev

在 React/Redux 中,如何在 componentDidMount 中调用相同的 fetch 两次,设置 2 个带结果的状态变量

来自分类Dev

如何使状态变量线程安全

Related 相关文章

  1. 1

    保持对React状态变量的“引用”

  2. 2

    如何在React Native中访问类外部的类的状态变量?

  3. 3

    关于如何在render()中引用状态变量的真正快速的问题-React Native

  4. 4

    React Native:使用状态变量的“ TypeError:未定义不是对象”

  5. 5

    React Native - 在静态函数中使用状态变量

  6. 6

    如何在 React Native 的导航项中使用状态变量

  7. 7

    在指定时间后修改React状态变量

  8. 8

    React:如何通过匹配另一个状态变量的值来修改状态变量

  9. 9

    React Native发布文字字符串有效,但发布状态变量失败

  10. 10

    React / JSX:我可以在另一个状态变量中使用一个状态变量吗?

  11. 11

    React Developer Tool是否可能显示使用useState创建的状态变量的名称?

  12. 12

    如何在React Route的父级中设置状态变量?

  13. 13

    ComponentWillUnmount是否等效于可访问状态变量当前值的React Hooks?

  14. 14

    如何在React中更新数组中的状态变量?

  15. 15

    在React中,setState回调和对状态变量使用useEffect有什么区别?

  16. 16

    React中的Material-Table。使用状态变量动态设置表选项

  17. 17

    React组件将状态变量作为参数,未在更新时呈现

  18. 18

    使用useState react钩子后返回的状态变量显示.map不是函数

  19. 19

    根据状态变量的变化,在react中显示多个动态输入字段?

  20. 20

    根据React功能组件中的状态变量有条件地设置className

  21. 21

    在react redux和saga中调度完成后获取状态变量?

  22. 22

    什么时候应该使用MobX可观察的代替React状态变量?

  23. 23

    在 react-redux 中同步查询参数和状态变量

  24. 24

    React 使用对象值作为状态变量名

  25. 25

    当更新它们基于的状态变量时,为什么这些表行在React中不重新呈现?

  26. 26

    如何将带有状态变量的 jsx 导入另一个 React 组件?

  27. 27

    迭代状态变量

  28. 28

    在 React/Redux 中,如何在 componentDidMount 中调用相同的 fetch 两次,设置 2 个带结果的状态变量

  29. 29

    如何使状态变量线程安全

热门标签

归档