Middle
Flux-un əsas konsepsiyası nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Flux-un əsas konsepti məlumatların unidirectional axınına əsaslanır. Tətbiqin vəziyyəti tək bir yerdə (Store) saxlanılır və bu vəziyyətə dəyişikliklər yalnız Dispatcher vasitəsilə, Actions işlənərək mümkündür.
Flux-un əsas elementləri:
- Actions: Tətbiqdə baş verənləri təsvir edir (məsələn, "istifadəçi düyməyə basdı"). Tip və məlumat yükləməsini (payload) ehtiva edir.
- Dispatcher: Bütün Actions üçün yeganə giriş nöqtəsidir. Actions-ı Store-a yönəldir.
- Store: Tətbiqin müəyyən bir hissəsinin vəziyyətini və onu dəyişdirmək üçün məntiqi ehtiva edir. Store vəziyyət dəyişikliklərini (Change Event) bildirmək üçün hadisələr yayır.
- Views: İstifadəçi interfeysi. Store-dan vəziyyəti göstərir. Store-dəki dəyişiklik hadisələrinə cavab verir və müvafiq olaraq yenilənir. View vəziyyəti birbaşa dəyişdirmir, əvəzinə Actions yaradır.
Məlumat axını:
- İstifadəçi View ilə qarşılıqlı əlaqədə olur.
- View Action yaradır.
- Action Dispatcher-ə göndərilir.
- Dispatcher Action-ı Store-a yönəldir.
- Store Action-ı işləyir, vəziyyətini dəyişir və Change Event yayır.
- Store-ə abunə olan View Change Event-i alır və yenilənir, yeni vəziyyəti göstərir.
// Action nümunəsi
const addTodoAction = (text) => ({
type: 'ADD_TODO',
payload: {
text: text
}
});
// Dispatcher nümunəsi (sadələşdirilmiş)
class Dispatcher {
constructor() {
this.callbacks = [];
}
register(callback) {
this.callbacks.push(callback);
}
dispatch(action) {
this.callbacks.forEach(callback => callback(action));
}
}
// Store nümunəsi (sadələşdirilmiş)
class TodoStore {
constructor(dispatcher) {
this.todos = [];
dispatcher.register(this.handleAction.bind(this));
}
handleAction(action) {
switch (action.type) {
case 'ADD_TODO':
this.todos.push(action.payload.text);
this.emitChange();
break;
// digər hallar
}
}
getAll() {
return this.todos;
}
// Hadisələrə abunə və çıxış metodları
addChangeListener(callback) { /* ... */ }
removeChangeListener(callback) { /* ... */ }
emitChange() { /* ... */ }
}
// View nümunəsi (sadələşdirilmiş)
class TodoList extends React.Component {
componentDidMount() {
this.store.addChangeListener(this.updateState);
}
componentWillUnmount() {
this.store.removeChangeListener(this.updateState);
}
updateState() {
this.setState({ todos: this.store.getAll() });
}
handleAddTodo(text) {
this.dispatcher.dispatch(addTodoAction(text));
}
render() {
// Tapşırıqlar siyahısı və giriş sahəsinin göstərilməsi
}
}
Flux vəziyyətin idarə olunmasını proqnozlaşdırıla bilən edir və açıq və nəzarət olunan məlumat axını sayəsində səhvlərin tapılmasını asanlaşdırır.