1- import type { EntityState } from "@reduxjs/toolkit"
21import { createEntityAdapter , createSelector , nanoid } from "@reduxjs/toolkit"
32import { createAppSlice } from "../../app/createAppSlice"
43import { deleteTodo } from "./todoSlice"
@@ -13,9 +12,14 @@ export const commentAdapter = createEntityAdapter<Comment>()
1312
1413const localisedSelectors = commentAdapter . getSelectors ( )
1514
15+ const initialState = commentAdapter . getInitialState ( )
16+
17+ const createCommentSliceSelector =
18+ createSelector . withTypes < typeof initialState > ( )
19+
1620export const commentSlice = createAppSlice ( {
1721 name : "comments" ,
18- initialState : commentAdapter . getInitialState ( ) ,
22+ initialState,
1923 reducers : {
2024 addComment : {
2125 reducer : commentAdapter . setOne ,
@@ -29,7 +33,7 @@ export const commentSlice = createAppSlice({
2933 builder . addCase ( deleteTodo , ( state , action ) => {
3034 commentAdapter . removeMany (
3135 state ,
32- state . ids . filter ( id => state . entities [ id ] ?. todoId === action . payload ) ,
36+ state . ids . filter ( id => state . entities [ id ] ?. todoId === action . payload )
3337 )
3438 } )
3539 } ,
@@ -39,11 +43,10 @@ export const commentSlice = createAppSlice({
3943 selectCommentEntities : localisedSelectors . selectEntities ,
4044 selectCommentIds : localisedSelectors . selectIds ,
4145 selectCommentTotal : localisedSelectors . selectTotal ,
42- selectCommentsByTodoId : createSelector (
43- localisedSelectors . selectAll ,
44- ( _state : EntityState < Comment , string > , todoId : string ) => todoId ,
46+ selectCommentsByTodoId : createCommentSliceSelector (
47+ [ localisedSelectors . selectAll , ( _state , todoId : string ) => todoId ] ,
4548 ( comments , todoId ) =>
46- comments . filter ( comment => comment . todoId === todoId ) ,
49+ comments . filter ( comment => comment . todoId === todoId )
4750 ) ,
4851 } ,
4952} )
0 commit comments