我定义了一个models目录里面创建了命名空间为app的model用于存放一些数据,但如何调用?
如题,在组件中如何获取model的初始化参数及reducers中的方法。跨组件使用actions并没有出现app命名空间中的reducers 方法
`import React, { Component } from 'react'; import { Spin, Layout, Button } from 'antd'; import { withRouter, connect, actions } from 'mirrorx'; import app from '../models/app';
class App extends Component {
render() { console.log( this.props ); console.log( actions ); return ( <div className="container"> holle,mirror ); } }
export default withRouter(connect(({ app }) => ({ app }))(App));`
我这么导入,之前的 actions 和 参数问题解决了。但是有没有更优雅的办法,比如怎么全局注册model ? 不导入model 的情况下不能使用 actions.app.add(1) 这种方式去调用吗? 刚上手react 对中间的机制不是特别理解,希望能帮我解惑,这对我来说非常重要。感谢
目前,所有通过 Mirror 来管理的 Redux state,都需要通过 mirror.model 来“注入”。因此也没有“全局 model”的概念。
如果你的部分数据不想通过 Mirror 管理(即不使用 actions[modelName][actionName] 来 dispatch),那么你可以定义一个标准的 redux reducer,通过 mirror.defaults 方法指定,然后手动调用标准的 dispatch 方法,也可以过在 connect 里传 mapDispatchToProps 处理。
非常感谢你的回答,对我很有帮助。 所有通过 Mirror 来管理的 Redux state,都需要通过 mirror.model 来“注入”。 我现在的办法是在入口index.js中: import React from 'react'; import Mirror, { connect, render, Router, Route, Link } from 'mirrorx'; import App from './router'; import './models'; import registerServiceWorker from './registerServiceWorker';
Mirror.defaults({ historyMode: 'hash' })
render(<App/>, document.getElementById('root'));
registerServiceWorker();
通过import 导入models的index文件:
const context = require.context('./', true, /.js$/); const keys = context.keys().filter(item => item !== './index.js'); const models = keys.map(key => context(key), []); export default models;
这样全局注册model。 文档中的api都可以调用,这么使用我不清楚对不对。 如果不使用这种方法是不是在组件中如果想使用reducers、effects、actions或者this.props 都需要 import 对应的model才可以