• 1400/03/27

پارامتر getState درون تابع async :

با سلام خدمت استاد قربانی عزیز.

استاد بنده یک سوالی داشتم و اونم اینه که تو کد زیر قسمت getState که از طریق thunk در اختیار ما قرار داده میشه آبجکت persons  رو از کجا میگیره؟؟

 

export const addPerson = () => {
    return async (dispatch, getState) => {
        const persons = [...getState.persons];
        .
        .
        .
    }
}
  • 1400/03/27
  • ساعت 17:35

سلام دوست من

مقدار state اصلی رو در اختیار ما قرار میده و persons درون state هست


  • 1400/03/27
  • ساعت 22:04

خب استاد ما جایی stateی به نام persons تعریف نکردیم که! از کجا میگیرم پس؟؟؟!!


  • 1400/03/29
  • ساعت 12:27

چون وقتی شخصی اضافه میشه درون متغییر persons که آرایه هست اضافه خواهد شد و در آخر متغییر persons که آرایه ایی از اشخاص هست به عنوان payload به reducer ارسال میشه و در store ذخیره میشه به صورت

{
	persons: [...]
}
await dispatch({ type: "ADD_PERSON", payload: persons });

در نظر بگیر که هیچ شخصی نیست و برای اولین بار قرار هست اضافه بشه

const persons = [...getState().persons];

به state اصلی دسترسی پیدا میکنه از store توسط تابع getState و میگه persons رو میخوام میبینه هیچی نیست پس خالی برمیگردده به کجا؟ با آرایه persons چون از spread operator استفاده کردیم و متغییر persons آرایه ایی خالی خواهد بود

const person = {
    id: Math.floor(Math.random() * 1000),
    fullname
};

شخص جدید به صورت آبجکت ساخته میشه

persons.push(person);
await dispatch({ type: "ADD_PERSON", payload: persons });

و به آرایه خالی ما persons اضافه میشه و در آخر اعزام میشه به reducers که payload ما آرایه persons که تنها یک شخص درون آرایه هست و در store ما به آرایه اشخاص توسط persons دسترسی داریم

 


  • 1400/03/30
  • ساعت 20:24

استاد فکر میکنم بنده نتونستم مفهوم سوالم رو بهتون بفهمونم. چون جوابی که شما دادید نتونست مفهوم رو برام مشخص کنه.
بنده سوالم این بود که این فیلد یا آبجکت persons  دقیقا کجا تعریف میشه که از درون getState قابل دسترسی هستش؟؟ این getState اطلاعاتش رو از کجا میگیره که به فیلدهای person , persons و showPersons دسترسی داره؟؟ اصلا این فیلد ها از کجا میان؟؟


  • 1400/03/30
  • ساعت 22:43

با اجازه استاد فکر کنم جواب دوستمون این باشه که
getState اطلاعات رو از استوری که داخل index دریافت کردیم و به صورت provider با props استور و مقدار استورمون گذاشتیم ، در دسترس ما میزاره
حالا استور چی میگیره؟reducer
reducer چی میگیره؟state یا همون دیتای ورودی ما و اکشن ها رو میگیره 

مبحث ریداکس خیلی پیچیده و یه نمه غیر منطقی هستش (البته شاید برای من تازه کار طبیعی باشه)

ولی توی یوتوب بگردی ویدیو های خوبی پیدا میکنی که توجیحت میکنه

توصیه من ویدیوهای آقای علی علایی هستش


  • 1400/04/01
  • ساعت 19:18

سلام دوست من

بله مثل اینکه من اشتباه متوجه شدم

فایل Index.js در پوشه reducers در قسمت combineReducer در اینباره صحبت کردم

import { combineReducers } from "redux";
import { personsReducer } from "./persons";
import { personReducer } from "./person";
import { showPersonsReducer } from "./showPersons";

export const reducers = combineReducers({
    persons: personsReducer,
    person: personReducer,
    showPersons: showPersonsReducer
});

logo-samandehi