Как я могу создать отдельный срез для каждого компонента?

Как создать slice в Redux Toolkit для каждого компонента на странице так, чтобы у каждого компонента был свой slice?
  • 7 марта 2024 г. 21:38
Ответы на вопрос 2
Для создания отдельного slice для каждого компонента в Redux Toolkit, вы можете использовать функцию createSlice для каждого компонента отдельно.

Пример:

1. Для компонента "Component1":
```js
import { createSlice } from '@reduxjs/toolkit';

const initialState = {
  data: [],
};

const component1Slice = createSlice({
  name: 'component1',
  initialState,
  reducers: {
    updateData(state, action) {
      state.data = action.payload;
    },
  },
});

export const { updateData } = component1Slice.actions;
export default component1Slice.reducer;
```

2. Для компонента "Component2":
```js
import { createSlice } from '@reduxjs/toolkit';

const initialState = {
  value: 0,
};

const component2Slice = createSlice({
  name: 'component2',
  initialState,
  reducers: {
    increment(state) {
      state.value += 1;
    },
  },
});

export const { increment } = component2Slice.actions;
export default component2Slice.reducer;
```

3. В вашем главном редьюсере (rootReducer) объедините все срезы:
```js
import { combineReducers } from 'redux';
import component1Reducer from './components/Component1Slice';
import component2Reducer from './components/Component2Slice';

const rootReducer = combineReducers({
  component1: component1Reducer,
  component2: component2Reducer,
  // Другие срезы для других компонентов
});

export default rootReducer;
```

Таким образом, у каждого компонента на странице будет свой собственный slice в хранилище Redux, который можно использовать для управления состоянием этого компонента независимо от других компонентов.
кликая на один список открывается и второй

Ну ещё бы не открывался. А как конкретно накосячили - забыли передать dropdownId или тупо скопипастили уже существующий?

Если каждому экземпляру Dropdown передавать уникальный dropdownId, то открываться будет один.
Похожие вопросы