Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用native base动态更改主题_Reactjs_React Native_Redux_Themes_Native Base - Fatal编程技术网

Reactjs 使用native base动态更改主题

Reactjs 使用native base动态更改主题,reactjs,react-native,redux,themes,native-base,Reactjs,React Native,Redux,Themes,Native Base,我正在尝试在应用程序中实现黑暗主题。我目前被告知使用本机base来实现这一点。我可以成功切换主题,但这需要我重新加载应用程序才能产生任何影响 我关于主题改变的逻辑也是在应用程序层面 在重新渲染时,主题在模块级状态下更改,如下所示 console.log(`darkTheme enabled? ${isDarkThemeEnabled}`); if (isDarkThemeEnabled && this.state.theme === 'light') {

我正在尝试在应用程序中实现黑暗主题。我目前被告知使用本机base来实现这一点。我可以成功切换主题,但这需要我重新加载应用程序才能产生任何影响

我关于主题改变的逻辑也是在应用程序层面

在重新渲染时,主题在模块级状态下更改,如下所示

    console.log(`darkTheme enabled? ${isDarkThemeEnabled}`);
    if (isDarkThemeEnabled && this.state.theme === 'light') {
      this.setState(() => ({
        theme: 'dark',
      }));
    } else if (!isDarkThemeEnabled && this.state.theme === 'dark') {
      this.setState(() => ({
        theme: 'light',
      }));
    }
  };
我知道这不是理想的逻辑,但根据我在app.js render方法中放置的控制台日志,它正在重新渲染,并且在样式提供程序中打开了主题切换。应用程序中的其余组件成功实现了本机基础,它们使用当前主题,但仅在应用程序刷新后切换。我还确保它们都在状态更改时重新渲染,但主题保持不变

更新:某些组件会动态更改,但不是全部。有什么原因吗?这似乎是随机的,我的一些视图标记正在更改,但不是全部,甚至不是全部在同一组件中

编辑:我正在使用redux,我的所有组件都在状态更改时重新渲染,但奇怪的是,只有一些主题正在更改,我最终是如何修复它的(有点):

运行npm i--保存git+

必须这样做,因为主题的npm版本没有clearThemeCache()

在我的app.js中

增加
从“本机基本主题”导入{clearThemeCache}

clearThemeCache()到正在更新暗主题更改组件状态的方法


从这里开始,我必须在黑暗主题切换上重新渲染整个应用程序中的每个组件,因为一些nativebase组件在黑暗主题更改时没有重新渲染

看起来你需要重新渲染。它成功了。但是,GeekyAnts主题看起来像一个ShouteUI主题。它是如何与本机基础一起工作的?谢谢