

現在Reactで開発をし、redux-toolkitでstate管理をしています。

そこで質問なのですが、例えば下記のようなsliceがあったとします。  
sliceとしては、user毎に異なるitemsを持っているため、userが変わればitemsも変わるようにstateを変更したいと考えています。（storeは省略しています）

**testslice.js**

[code]

    import { createSlice } from '@reduxjs/toolkit';
    
    const initialState = {
        user:{id:"",name:""},
        items: []    
    }
    
    //sliceの作成 
    const testSlice = createSlice({
        name: 'test', 
        initialState, 
        reducers: {
            changeUser(state, action) { 
                state.user = { ...action.payload };
            },
            renewItems(state, action) {
                state.items = [...action.payload];
            }
        },
    })
    
    export const {changeUser, renewItems} = testSlice.actions;
    export const selectTest=(state =>state.test);
    export default testSlice.reducer;
    
[/code]

次に実際にreducersで定義したactionをdispatchしようとしているコンポーネントは下記になります。  
ボタンをクリックするとchangeUserでuserが変わり、その変わったuserを基にItemsを更新するというactionを通知しようとしています。（引数は省略しています）

**TestPage.jsx**

[code]

    import { useDispatch, useSelector } from 'react-redux';
    import { changeUser, renewItems} from '../slice/testSlice';
    import { Button } from '@mui/material';
    import React from 'react';
    import { selectTest } from '../slice/testSlice';
    import store from '../store';
    
    
    export const TestPage = () => {
        const getTest = useSelector(selectTest);
        const dispatch = useDispatch();
        const testPach = () => {
            dispatch(changeUser());
            dispatch(renewItems());
        };
        console.log(store.getState());
    
        return (
            <>
                <div>{getTest.user.name}</div>
                <Button variant="contained" onClick={() => testPach()}>testSlice用</Button>
            </>
        );
    };
    
[/code]

上記のように、あるコンポーネントでボタンがクリックされたことをトリガーとして、あるstateのプロパティの変更を基に、そのstateの別のプロパティを更新しようとするのはredux-
toolkitの仕様としてNGでしょうか？(またはredux単体でNGかもしれませんが…）

どなたかご存じの方がいらっしゃいましたらご教授お願いします。


CC BY-SA 4.0
2023-02-02T01:36:42.970
93678
2023-02-02T01:36:42.970
54288
question
reactjs redux
redux-toolkitで、あるstateのプロパティの変更を基にそのstateの別プロパティを変更することは可能かどうか