Open BoyuZhou opened 7 years ago
为啥我不能注入成功?
@xulayen 贴下代码
@inject('loginStore') @observer
class Login extends Component {
changeUsername = (e) => {
this.props.loginStore.changeUsername(e.target.value)
}
@inject('loginStore') 是如何引入 stores/loginStore 的呢? 是和 mobx-react 中的 inject 语法有关吗?没看懂。。。
update
import * as stores from '../stores';
import { App, Login, Homepage } from '../containers';
export default (
<Provider { ...stores}>
好吧,自问自答一下,原来是在 /routes/index.js 这里引入了 stores。
const loginStore = new LoginStore();
export default loginStore;
export { LoginStore };
这里为啥要 export 两次? 注释掉 export default loginStore;
似乎也不会报错。
update
export default loginStore;
是暴露出一个类的实例,这个我明白了,因为在 login 界面需要使用到 login的一些实例方法。
export { LoginStore };
这一步就不太明白了,貌似没有地方用到了 LoginStore 这个类。
为啥我不能注入成功?
可以参考https://github.com/zzxiexin/react-antd-mobx-pc-tpl,完整的react+mobx+router,麻烦给心,谢谢
搭建你的mobx react应用
阅读这篇文章,需要你有一定的react开发基础和配置基础。
mobx的大部分写法都使用了decorator语法,所以请引入
babel-plugin-transform-decorators-legacy
来提供支持。本文由一个简单的单页应用例子,来讲一下mobx和react的结合使用。
示例代码在http://github.com/Boyuzhou/mobxDemo.git
例子中使用了tinper-bee组件库,如果你看着不错,欢迎下载使用哦。
依赖
简单api介绍
class OrderLine { @observable price:number = 0; @observable amount:number = 1;
}
import {observer} from "mobx-react"; @observer class xxx extends React.Component{
}
import {observable, computed} from "mobx";
class OrderLine { @observable price:number = 0; @observable amount:number = 1;
}
import { observable, action } from 'mobx';
class LoginStore { @observable username; @observable password;
}
import {observable, computed} from "mobx";
class OrderLine { @observable price:number = 0; @observable amount:number = 1;
}
|- src |- actions |- assets |- components |- containers |- stores |- routes |- index.js |- inde.html
import { Provider } from 'mobx-react'; import { Router, Route, IndexRoute, browserHistory } from 'react-router'; import React from 'react'; import * as stores from '../stores'; import { App, Login, Homepage } from '../containers';
export default ( <Provider { ...stores}> <Router history={ browserHistory }>
)
import { observable, action } from 'mobx';
class LoginStore { @observable username; @observable password;
}
const loginStore = new LoginStore();
export default loginStore; export { LoginStore };
import React, {Component} from 'react'; import {observer, inject} from 'mobx-react'; import DevTools from 'mobx-react-devtools'; import { Row, Col, Tile, Button, Form, FormControl, Label, FormGroup } from 'tinper-bee'; import { Link } from 'react-router';
import './index.css';
@inject('loginStore') @observer class Login extends Component {
} ;
export default Login;