Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我定义了一个models目录里面创建了命名空间为app的model用于存放一些数据,但如何调用? #66

Open
DaybreakH opened this issue Oct 6, 2017 · 3 comments

Comments

@DaybreakH
Copy link

如题,在组件中如何获取model的初始化参数及reducers中的方法。跨组件使用actions并没有出现app命名空间中的reducers 方法

@DaybreakH
Copy link
Author

`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 (


holle,mirror

);
}
}

export default withRouter(connect(({ app }) => ({ app }))(App));`

我这么导入,之前的 actions 和 参数问题解决了。但是有没有更优雅的办法,比如怎么全局注册model ? 不导入model 的情况下不能使用 actions.app.add(1) 这种方式去调用吗? 刚上手react 对中间的机制不是特别理解,希望能帮我解惑,这对我来说非常重要。感谢

@llh911001
Copy link
Member

目前,所有通过 Mirror 来管理的 Redux state,都需要通过 mirror.model 来“注入”。因此也没有“全局 model”的概念。

如果你的部分数据不想通过 Mirror 管理(即不使用 actions[modelName][actionName] 来 dispatch),那么你可以定义一个标准的 redux reducer,通过 mirror.defaults 方法指定,然后手动调用标准的 dispatch 方法,也可以过在 connect 里传 mapDispatchToProps 处理。

@DaybreakH
Copy link
Author

DaybreakH commented Oct 8, 2017

非常感谢你的回答,对我很有帮助。
所有通过 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(, 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才可以

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants