Я пытаюсь понять реализацию mobx в React. Я использовал create response app и обновил конфигурацию по умолчанию, чтобы использовать декораторы. Затем я создал такой простой магазин:
РЕДАКТИРОВАТЬ: после ответа Бена Хейра (спасибо ему!) Я обновил свой код следующим образом:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import MessageStore from "./store/messages";
ReactDOM.render(<App store={new MessageStore()} />,
document.getElementById('root'));
** App.js **
import React from "react";
import { observer } from "mobx-react";
@observer
export default class App extends React.Component {
constructor(props) {
super(props);
this.store = props.store;
}
render() {
return <ul>
{ this.store.allMessages.map((msg) => {
return <li key={msg}>{msg}</li>
})}
</ul>
}
}
messages.js
import {action, observable, computed} from "../../node_modules/mobx/lib/mobx";
export default class MessageStore {
@observable messages = ["My first message"];
constructor() {
setInterval(() => {
// Add some random messages every second
this.addMessage(Math.random());
}, 1000);
}
@action addMessage(msg) {
this.messages.push(msg);
}
@computed get allMessages() {
return this.messages;
}
}
Отображается первое сообщение, но компонент никогда не обновляется, когда setInterval добавляет сообщение в хранилище. Вы можете мне помочь ?