Sessioonimuutujad

Kuigi Meteori standadrdinstallis on olemas pakk reactive-var , mis võimaldab kasutada piiratud skoopiga muutujaid on mõnel juhul hea kasutada globaalse skoobiga muutujaid ja selleks on pakk session.

Kasutamine

Session.set(key, value)
Session.get(key)

Lisan äpis nupu mis lülitab kõigi kirjete näitamise rsisse/välja ning salvestan režiimi meelespidamiseks sessioonimuutujat.

Lisan funktsiooni mis seab muutuja showAll:

showAll() {
    Session.set('showAll',true);
  }

Ja nupu:

<button onClick={this.showAll}>Näita kõiki</button>

Lisan konteineris sessioonimuutujast väärtuse võtmise

let showAll = Session.get('showAll');

ja kirjete näitamise filtri:

  limit: showAll ? 50 : 1, // kui showAll on tõene siis 50

Teen konteineris muutujast showAll props-i:

//Wrapper  andmete lisamiseks klassile App
export default createContainer(() =>{
  let itemsSub = Meteor.subscribe('allItems');
  let showAll = Session.get('showAll');
  return {
    showAll, // sama mis showAll: showAll, teen propsiks
    ready: itemsSub.ready(),
    items: Items.find({},{
      limit: showAll ? 50 : 1, // kui showAll on tõene siis 50
      sort: { lastUpdated: 1} //sorteeritakse välja lastUpdated järgi
    }).fetch()
  }
},App);

Kasutan seda nupul teksti näitamiseks vastavalt muutuja väärtusele ja lisan ka bind(this) et saaks viidata this abil:

<button onClick={this.showAll.bind(this)}>
  Näita {this.props.showAll ? 'üks':'kõiki'}
</button>

Nüüd toimib nupp ühtepidi muutusena, iimi ka teistpidi muuta tuleb veel muuta showAll() funktsiooni mis seab muutuja väärtuse:

showAll() {
    if (this.props.showAll) {
      Session.set('showAll',false);
    }
    else {
    Session.set('showAll',true);
    }
  }

Last updated