问题描述
我想使用 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 (将#修改为@)