Im folgenden Basisbeispiel, das (a) einen Typ (Klasse), (b) einen Speicher (Klasse) und (c) eine Komponente (Klasse) enthält, ist es nicht klar, wie die Instanz des Speichers zu aktualisieren ist ("MyPanel.MyItems"), so dass Mobx die Wertänderung beobachtet und MyList effizient rendert.Wie aktualisiere ich Werte, so dass Mobx ein Rendern verursacht?
Ich bin Beispiele folgen und soweit ich weiß $r.MyItems.Items[4].OnlineStatus = 0/1
sollte eine Neuzeichnung erzwingen. Und das tut es nicht.
class MyItem {
id = 0;
onlineStatus = 0;
displayName = "";
thumbnail = "";
}
class MyStore {
constructor() {
this.items = [
{id:10, onlineStatus:0, displayName:'Bart', thumbnail: '' },
{id:20, onlineStatus:0, displayName:'Jean', thumbnail: '' },
{id:30, onlineStatus:1, displayName:'Emma', thumbnail: '' },
{id:40, onlineStatus:1, displayName:'Caitie', thumbnail: '' },
{id:50, onlineStatus:1, displayName:'Chris', thumbnail: '' },
];
}
}
@observer
class MyPanel extends React.Component{
@observable
MyItems = new MyStore();
Mylist = this.MyItems.items.map(MyItem => (
<li key={MyItem.id} onClick={this.toggleSelection.bind(this, MyItem.id)} >
<span>{MyItem.thumbnail}</span>{ MyItem.onlineStatus ? <i ></i> : <i ></i>} <p>{MyItem.displayName}</p>
</li>
));
render() {
return (
<div id="my-panel" >
<ul className="panel-list">
{this.Mylist}
</ul>
</div>
);
}
}
So offensichtlich einmal erklärt, so dass nicht klar, bevor er erklärt wird. Vielen Dank. ;) –
@CurtDoolittle Kein Problem! – Tholle