Наконец-то нашел ошибки, которые я сделал. Эти вещи были просто комбинациями предыдущих вопросов stackOverflow, которые я делал вместе. Я потратил на это целый день. Я подумал, что скажу, чтобы другие больше не делали этого. Кроме того, ни одна из этих новых ошибок не является просто объединенными.
1-я ошибка -> я сделал то, что предположил, что создатели действий с промежуточным программным обеспечением thunk похожи на любые другие функции, которые вернет диспетчеризацию, но я был неправильный .
// return of response part is dispatched
return dispatch(responseAnswer) ;
Я узнал, что создатели действий с thunk возвращают функции с диспетчеризацией в качестве аргументов.
правильный путь будет ->
// i have to return a function
//not directly return dispatch(with something)
function authUser(data){
// now it will be correct since its returning a func
//with dispactch as argument
return (dispatch)=>{
let response=new Promise(async(resolve,reject)=>{
try{
let fetchedData=await (apiCall("post","/api/auth/logIn",data))
console.log(fetchedData.data)
resolve(fetchedData.data)
}catch(err){
reject(err)
}
})
response.then((data,x)=>{
dispatch({type:SET_CURRENT_USER,user:data})
}).catch((err)=>err)
}
}
Эти возвращаемые функции используют аргумент dispatch для отправки действий. Я был озадачен тем, что мы возвращаем dispatch с аргументами as (action to быть вызванным) , но в действительности --->
мы передаем диспетчеризацию в качестве аргумента в функцию и возвращаем эту функцию. Внутри этой функции мы вызываем dispatch всякий раз, когда наши асин c запросы завершаются для изменения состояния.
2nd Error ---> Я предполагал, что обратные вызовы .then могут использоваться для возврата данных, таких как ..
var x = promisefunc.then((data)=>(data))
я думал, что это вернет данные, но много раз было сказано в stackOverflow, что операторы этого типа присваивают значение x в качестве обещания и не возвращают данные.
3-я ошибка- -> Я был озадачен тем, как диспетчеризация передается в качестве аргумента всякий раз, когда мы объявляем операторы, подобные приведенным ниже, и передаем actionCreators.
connect(mapStateToProps,{authUser})(Main)
, но потом я прочитал в документах Redx и нашел это --->
**// Thunk middleware knows how to handle functions.
// It passes the dispatch method as an argument to the function,
// thus making it able to dispatch actions itself.**
Тогда я понял, что на самом деле мы передаем примитиву только обычные объекты, что делает thunk, всякий раз, когда мы передаем reduxActionCreator как функцию, которую обрабатывает thunk, а затем thunk помогает отправлять действие изнутри этой функции.
Я могу ошибаться в представлениях о том, что я понял, поправьте меня, если вы думаете, что я где-то ошибся.