Я пытаюсь настроить приложение React, используя mobx для управления состоянием.
Я определил хранилище примерно так:
ApplicationStore.js
import { observable, action, reaction } from 'mobx';
class ApplicationStore {
@observable appName = 'App';
@observable currentRoute = '/';
@observable appLoaded = false;
@action setAppLoaded() {
this.appLoaded = true;
}
}
export default new ApplicationStore();
Использование его в Root.js
для сбора инструментов хранения / отладки и передачи его в основной компонент приложения:
Root.js
import React, { Component } from 'react';
import { Provider } from 'mobx-react';
import App from './App.js';
import './Root.css';
import ApplicationStore from './stores/ApplicationStore';
const stores = { ApplicationStore }
class Root extends Component {
render() {
return (
<Provider {...stores}>
<App />
</Provider>
);
}
}
export default Root;
App.js
import React, { Component } from 'react';
import Login from './views/login/Login'
import Dashboard from './views/dashboard/Dashboard'
import { observer, inject } from 'mobx-react';
import { Switch, Route, BrowserRouter, Redirect } from 'react-router-dom'
@inject('ApplicationStore')
@observer
class App extends Component {
componentDidMount() {
console.log(this.props)
};
render() {
var loggedIn = false;
return (
<div className="App">
<BrowserRouter>
<Switch>
<Route exact path="/" render={() => (
loggedIn ? (
<Redirect to="/dashboard" />
) : (
<Redirect to="/login" />
)
)} />
<Route exact path="/login" component={Login} />
<Route exact path="/dashboard" component={Dashboard} />
</Switch>
</BrowserRouter>
</div>
);
}
}
export default App;
console.log(this.props)
в componentDidMount()
показывает, что есть пустые реквизиты.
Кроме того, проверка дочерних элементов <Provider>
в React-dev-tools показывает, что @inject
не создает новый компонент (вместо <inject-App-with-ApplicationStore>
отображается <App>
. *)1031 *
Я не понимаю, даааааа и