У меня есть три компонента;Форма, Предварительный просмотр и AppStore.Нажатие кнопки в форме добавляет элемент в магазин.Кажется, это работает нормально, за исключением того, что список в компоненте Preview не обновляется и не перерисовывается при изменении хранилища, даже если оно имеет декоратор @observer.Чего мне не хватает?
Форма имеет функцию кнопки и обработчика, которая добавляет элемент в магазин:
@inject('AppStore')
@observer class Form extends React.Component{
handleAddItem= (item) =>{
const {AppStore} = this.props;
AppStore.addItem(item);
console.log(AppStore.current.items)
}
render(){
return(
<button onClick={() => this.handleAddItem('Another Item')}>Add Item</button>
)}
}
Предварительный просмотр карт через элементы (я использую перетаскиваниетак что мой код может выглядеть немного странно)
@inject('AppStore')
@observer class Preview extends React.Component
...
return(
<ul>
{items.map((value, index) => (
<SortableItem key={`item-${index}`} index={index} value={value} />
))}
</ul>)
...
return <SortableList items={AppStore.current.items} onSortEnd={this.onSortEnd} />;
Вот магазин:
import { observable, action, computed } from "mobx";
class AppStore {
@observable other = {name: '', desc:'', items: [ 'item 1', 'item 2', 'item 3'], id:''}
@observable current = {name: '', desc:'', items: [ 'item 1', 'item 2', 'item 3'], id:''}
@action addItem = (item) => {
this.current.items.push(item)
}
}
const store = new AppStore();
export default store;