如何使用react typescript和redux工具包获取所有用户信息

drnojrws  于 2022-11-24  发布在  React
关注(0)|答案(1)|浏览(133)

我正在使用react typescript和redux工具包,为了获得用户信息,我遇到了麻烦。这是一个userSlice.ts:

export const userSlice = createSlice({
  name: "user",
  initialState: {
    user: null,
  },
  reducers: {
    setUser: (state, action) => {
      state.user = action.payload;
    },
   
  },
});

这是protectedRoute.tsx一部分:

export function ProtectedRoute(props: { children: any }) {
  const {user} = useSelector((state: any) => state.user);

  const dispatch = useDispatch();
  const navigate = useNavigate();
  const getUser = async () => {
    try {
      dispatch(showLoading());
      const response = await axios.post(
        "/api/users/user",
        { token: localStorage.getItem("token") },
        {
          headers: {
            Authorization: `Bearer ${localStorage.getItem("token")}`,
          },
        }
      );
      dispatch(hideLoading());
      if (response.data.success) {
        console.log(response.data.data.isAdmin);
        dispatch(setUser(response.data.data));

问题是状态。用户只能取一个值。我想从后端注册所有数据。
我怎样才能做到

btqmn9zl

btqmn9zl1#

state.user只能取一个值是什么意思?如果你的意思是你想存储所有来自服务器的关于user的数据,你也可以把user转换成一个带有预期对象的类型,并传递整个response对象。

type User = {
  isAdmin: boolean,
  ...
}

initialState: {
  user: User,
},

相关问题