2015-11-23 3 views
1

У меня есть Реагировать App с Reflux магазином, где некоторые компоненты послушать trigger(), а затем вызывает Reflux магазина getters, чтобы восстановить свои обновленные состояния. т.е.Реагировать рефлюксные Магазины: Разница между вызовом триггера() с параметрами по сравнению без параметров

var Store = Reflux.createStore({ 
    init: function() { 
    this.filterList = []; 
    ... // listening to actions 
    } 

    onNewFilterItemAction: function(item) { 
    this.filterList.push(item); 
    this.trigger(...); 
    } 
}); 

В чем разница между вызовом trigger() с параметрами против без? А именно:

onNewFilterItemAction: function(item) { 
    this.filterList.push(item); 
    this.trigger(this.filterList); 
    } 

против

onNewFilterItemAction: function(item) { 
    this.filterList.push(item); 
    this.trigger(); 
    } 
+0

Разница заключается в том, что вы либо передать аргументы или нет. Рефлюкс все равно вызовет действие. https://github.com/reflux/refluxjs/blob/719504156ddbacfce700fa21078d37c79537360a/dist/reflux.js#L630 –

ответ

1

Вы можете выборочно обновлять.

componentDidMount =() => { this.unsubscribe = BasicStore.listen(this.storeDidChange); } 
 
    componentWillUnmount =() => { this.unsubscribe(); } 
 
    storeDidChange = (id) => { 
 
    switch (id) { 
 
     case 'data1': this.setState({Data1: BasicStore.getData1()}); break; 
 
     case 'data2': this.setState({Data2: BasicStore.getData2()}); break; 
 
     case 'data3': this.setState({Data3: BasicStore.getData3()}); break; 
 
     default: this.setState(getState()); 
 
    } 
 
    }

+0

Этот шаблон поощряется? Не получает ли частичные обновления хранилища опасными и багги? –

+0

Что было бы опасно и багги. Его единственный объект с несколькими свойствами. –

+0

Что я имел в виду, так это то, что хранилище становится более сложным, когда действия и храните мутации состояний, переплетенные, вызывающие 'getter()' только часть состояния хранилища, могут означать, что другие обновленные состояния хранилища не извлекаются. Конечно, этого можно легко избежать для более простой базы кода. –