자바스크립트의 Redux Toolkit은 애플리케이션의 상태 관리를 효과적으로 할 수 있도록 도와줍니다. 이를 활용하여 데이터의 정렬 및 필터링을 구현하는 방법에 대해 알아보겠습니다.
데이터 정렬
Redux Toolkit에서 데이터를 정렬하는 가장 간단한 방법은 createSlice
를 사용하여 슬라이스를 만든 후, createAsyncThunk
를 사용하여 비동기 작업을 수행하는 것입니다. 예를 들어, 사용자 목록을 가져와서 이름으로 정렬하는 경우를 생각해 봅시다.
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
const fetchUsers = createAsyncThunk('users/fetch', async () => {
const response = await fetch('https://api.example.com/users');
const data = await response.json();
return data;
});
const usersSlice = createSlice({
name: 'users',
initialState: { data: [], status: 'idle', error: null },
reducers: {},
extraReducers: (builder) => {
builder
.addCase(fetchUsers.pending, (state) => {
state.status = 'loading';
})
.addCase(fetchUsers.fulfilled, (state, action) => {
state.status = 'succeeded';
state.data = action.payload.sort((a, b) => a.name.localeCompare(b.name));
})
.addCase(fetchUsers.rejected, (state, action) => {
state.status = 'failed';
state.error = action.error.message;
});
},
});
export const { selectAll: selectAllUsers } = usersSlice.getSelectors((state) => state.users);
export default usersSlice.reducer;
위의 코드에서 createAsyncThunk
함수를 사용하여 비동기 작업인 fetchUsers
를 생성합니다. createSlice
함수를 사용하여 슬라이스를 만들고, extraReducers
에서 fetchUsers.pending
, fetchUsers.fulfilled
, fetchUsers.rejected
를 통해 비동기 액션에 대한 처리를 정의합니다. 성공적으로 데이터를 가져온 후에는 sort
함수를 사용하여 데이터를 이름으로 정렬합니다.
데이터 필터링
Redux Toolkit을 사용하면 데이터를 필터링하기 위한 간단한 메커니즘을 구현할 수 있습니다. 예를 들어, 사용자 목록에서 특정 권한을 가진 사용자만 필터링하는 경우를 생각해 봅시다.
import { createSlice, createSelector } from '@reduxjs/toolkit';
const usersSlice = createSlice({
name: 'users',
initialState: [],
reducers: {
filterByPermission: (state, action) => {
return state.filter((user) => user.permission === action.payload);
},
},
});
export const { filterByPermission } = usersSlice.actions;
export const selectUsers = (state) => state.users;
export const selectFilteredUsers = createSelector(
selectUsers,
(users) => users.filter((user) => user.permission === 'admin')
);
export default usersSlice.reducer;
위의 코드에서 createSelector
함수를 사용하여 데이터를 필터링할 수 있도록 설정합니다. filterByPermission
reducer를 정의하여 사용자 목록을 특정 권한으로 필터링할 수 있습니다. selectFilteredUsers
selector를 통해 필터링된 사용자 목록을 가져올 수 있습니다.
마무리하며
Redux Toolkit을 사용하면 자바스크립트 애플리케이션에서 데이터의 정렬 및 필터링을 간단하고 깔끔하게 구현할 수 있습니다. 이를 통해 사용자 경험을 개선하고 애플리케이션의 성능을 향상시킬 수 있습니다.
#javascript #redux #reduxtoolkit #데이터정렬 #데이터필터링