所以我一直在寻找解决方案,但似乎找不到适合我正在做的事情的解决方案。以下是我的网站结构:
https://ibb.co/Xz27rgK
正如你所看到的;NavBar";组件在路由器之外,因为我一直希望它被渲染。但我在导航栏上有一个黑暗模式切换,当我点击它时,我希望它更新刷新图表组件(它是一个react-chattjs-2图表(。
我知道你可以使用setState();
来重新发布,但当我运行onClick();
函数时,如何告诉Chart组件从NavBar中重新发布呢?
对于一个要触发兄弟组件或兄弟组件的子组件的重新渲染的组件,它们必须触发某个共享父组件的重新呈现。在这种情况下,所有组件都是单个根组件的子组件是有意义的,因为主题在整个项目中应该是一致的,除非您有一些特定的用例。
可能最简单的方法是从最上面的组件传入回调setTheme
和theme
属性。在setTheme
回调中,您应该调用最顶层父组件的setState
,然后它将触发使用新主题重新渲染每个子组件。
查看此处,了解如何更改react组件主题的更详细描述。