reactjs - 如何通过 Redux 商店动态更新 Material UI 主题?

标签 reactjs redux themes material-ui

我有以下使用自定义 Material UI 主题的 React 组件

const getTheme = name => theme.filter(theme => theme.name === name)[0] ||主题[0];

const Root = props => (
    <MuiThemeProvider muiTheme={getMuiTheme(getTheme(props.theme).data)}>
        <Router history={history}>
            <Switch>
                <Route component={AppContainer}/>
            </Switch>
        </Router>
    </MuiThemeProvider>
);

它由容器供给

const mapStateToProps = state => ({
    theme: state.settings.theme
});

const RootContainer = connect(mapStateToProps, {})(Root);

当我在设置页面上更新主题名称时,状态会更新(通过 Redux 日志记录确认),但主题不会更新。但是,当我离开该页面时,将应用新主题。

大概状态的变化不会导致 Root 组件重新渲染,或者有一些我不明白的应用方式

<MuiThemeProvider muiTheme={getMuiTheme(getTheme(props.theme).data)}>

知道如何让主题更新它在状态中更改的实例吗?

最佳答案

事实证明,我还必须将更新的主题作为 Prop 传递给我的应用程序组件(位于层次结构中的根下方)。似乎这与主题是通过上下文传递的事实有关,并且更改配置主题的组件中的 Prop 不足以触发所需的更新。

关于reactjs - 如何通过 Redux 商店动态更新 Material UI 主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46567120/

相关文章:

reactjs - 如何在 React 中写入和读取组件状态?

javascript - ReactJS 服务器端渲染上文档事件处理的 ReferenceError

redux - 2021 年我应该使用 redux-saga 或 redux-thunk 做什么?

javascript - React中post请求成功后重定向的正确方法是什么?

javascript - 子主题 - Javascript 未触发

javascript - 太多的条件会破坏 React 中的 HOC 吗?

javascript - 为什么我的 reducer 在 react/redux 中返回一个空数组?

php - 如何使用 moodle 为管理端和前端设置不同的 css?

visual-studio - 更改 Visual Studio 2019 主题时间控制(主题的日/夜模式)

javascript - React-Router 不会在位置参数更改时卸载