سلام جناب سوری وقتتون بخیر
ببخشید برای زمانی که ما نیاز داریم طبق یک شرطی حالت reject رو اجرا کنیم چطور میتونیم عمل کنیم
مثلا من یک api دارم که برای ورود کاربر چه اطلاعات درست باشه چه نباشه استاتوس کد 200 میده بعد داخل status معلوم میشه که یوزر پسورد درست بوده یا نه.
من برای اینکه بتونم زمانی که اطلاعات اشتباه بود حالت rejected رو اجرا کنم اینطور عمل کردم:
export const fetchToken = createAsyncThunk(
'user/login',
async ({username, password}) => {
try {
const {data} = await http.post('/auth/login', {
username,
password
});
if(data.status === 'Error') throw data;
return data;
}
catch (err) {
throw {
message: err.msg,
};
}
}
)
const userSlice = createSlice({
name: 'user',
initialState,
reducers: {},
extraReducers: builder => {
builder.addCase(fetchToken.fulfilled, (state, {payload}) => {
state.token = payload.token;
state.error = null;
});
builder.addCase(fetchToken.rejected, (state, {error}) => {
state.error = error;
})
}
});
به نظرتون راه حل بهتری وجود داره؟
و اینکه الان یه مشکلی هست که ادیتور من زمانی که داخل try یک چیزی رو throw میکنم این وارنینگ رو میده:
'throw' of exception caught locally
Inspection info: Reports a throw statement whose exceptions are always caught by the containing try statement. Using throw statements as a goto to change the local flow of control is confusing.
آیا راه حل دیگه ای به جز throw کردن وجود داره؟