Вопрос пользователя:
Ответ нейросети:
// actions.js export const TOGGLE_THEME = 'TOGGLE_THEME';
export const toggleTheme = () => ({ type: TOGGLE_THEME });
// reducer.js import { TOGGLE_THEME } from './actions';
const initialState = { theme: 'light' };
const themeReducer = (state = initialState, action) => { switch (action.type) { case TOGGLE_THEME: return { ...state, theme: state.theme === 'light' ? 'dark' : 'light' }; default: return state; } };
export default themeReducer;
// ThemeSwitcher.js import React from 'react'; import { connect } from 'react-redux'; import { toggleTheme } from './actions';
const ThemeSwitcher = ({ theme, toggleTheme }) => { return ( <div> <label> <input type="checkbox" checked={theme === 'dark'} onChange={toggleTheme} /> Dark Theme </label> </div> ); };
const mapStateToProps = state => ({ theme: state.theme });
const mapDispatchToProps = { toggleTheme };
export default connect(mapStateToProps, mapDispatchToProps)(ThemeSwitcher);
// App.js import React from 'react'; import { Provider } from 'react-redux'; import { createStore } from 'redux'; import themeReducer from './reducer'; import ThemeSwitcher from './ThemeSwitcher';
const store = createStore(themeReducer);
const App = () => { return ( <Provider store={store}> <ThemeSwitcher /> </Provider> ); };
export default App;
Напишите нам, если в вопросе есть ваши персональные данные ([email protected])
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.