redux 工具包并重新选择

问题描述

我想使用 reselect 但我还没有正确理解它。

如果我想过滤任何东西,那么我可以这样做:

const selectNumCompletedTodos = createSelector(
  (state) => state.todos,(todos) => todos.filter((todo) => todo.completed).length
)

但是如果我取了,它看起来怎么样? (我使用 useSelector 而不是 mapToProps)

我的代码

登录

imports
...
const Login = ({ navigation,route }) => {
  const dispatch = usedispatch();

  const [email,setEmail] = useState('');
  const [password,setPassword] = useState('');
  const [passwordShown,setPasswordShown] = useState(true);

  const handleGoBack = () => {
    navigation.goBack();
  };

  const handleLogin = async () => {
    const payload = {
      email,password
    };
    dispatch(request(payload));
  };
  return (
   <View>
     <TouchableOpacity onPress={handleLogin}>
       <Text>click to fetch!</Text>
     </TouchableOpacity>
   </View>
  )

authSaga.js

import { all,call,put,take,takeEvery,takeLatest } from 'redux-saga/effects';
import { request,authSuccess,authFailure } from '../slice/authSlice';
import authAPI from '../../api/auth';
import * as SecureStore from 'expo-secure-store';

function* auth({ payload }) {
  const data = yield call(authAPI,payload);
   yield put(authSuccess(data.user));
}

function* watcher() {
  yield takeEvery(request.type,auth);
}

export default function* () {
  yield all([watcher()]);
}

减速器:

import { combineReducers } from "redux";
import authReducer from './slice/authSlice';

const rootReducer = combineReducers({
  user: authReducer,});

export default rootReducer;

切片:

import { createSlice } from '@reduxjs/toolkit';

const authSlice = createSlice({
  name: 'user',initialState: {
    loading: false,data: [],error: null
  },reducers: {
    request(state) {
      state.loading = true;
    },authSuccess(state,action) {
      state.loading = false;
      state.data = action.payload;
    },authFailure(state,action) {
      state.loading = false;
      state.error = action.payload;
    }
  }
});

export const { request,authFailure } = authSlice.actions;

export default authSlice.reducer;

有人可以帮我吗?

..................................... ......................................

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)