1.0.2 • Published 7 years ago
mido-react v1.0.2
mido-react
优化
- webpack
 
externals: {
      'react': 'React',
      'react-dom': 'ReactDOM',
      'react-router-dom': 'ReactRouterDOM',
      'redux': 'Redux',
      'react-redux': 'ReactRedux',
      'react-router-redux': 'ReactRouterRedux',
      'redux-saga': 'ReduxSaga'
    }- 自行搜索cdn资源
 
内置
import { react, redux, reactRedux, reactRouterDom } from 'mido-react';app.js
- 单模式
- mode可以是单对象
 
 
import Mido from 'mido-react';
import App from './App';
const mido = Mido();
 mido.model({
   namespace: 'home',
   state: {
     number: 1
   },
   reducers: {
     add(state, action) {
       return {
         number: state.number + 1
       }
     },
     reduce(state, action) {
       return {
         number: state.number - 1
       }
     }
   },
   effects: {
     asyncAdd: [
      function *({ data: {number} }, { call, put }) {
        yield put({
          type: 'add'
        })
      },
      {
        type: 'throttle',
        ms: 3000
      }
    ],
    *asyncReduce({  }, { call, put }) {
      yield put({
        type: 'reduce'
      })
    }
   }
 })
mido.router(() => <App />);
mido.run(document.getElementById('app'));- 多模式
- mode可以是数组
 
 
import Mido from 'mido-react';
import App from './App';
const mido = Mido();
mido.model([
  {
    namespace: 'home',
    state: {
      number: 1
    },
    reducers: {
      add(state, action) {
        return {
          number: state.number + 1
        }
      },
      reduce(state, action) {
        return {
          number: state.number - 1
        }
      }
    }
  },
  {
    namespace: 'home2',
    state: {
      number: 1
    },
    reducers: {
      add2(state, action) {
        return {
          number: state.number + 2
        }
      },
      reduce2(state, action) {
        return {
          number: state.number - 2
        }
      }
    },
     effects: {
      *asyncAdd2({ }, { call, put }) {
        yield put({
          type: 'add2'
        })
      },
      *asyncReduce2({  }, { call, put }) {
        yield put({
          type: 'reduce2'
        })
      }
    },
    subscriptions: {
      setup({ dispatch, history }) {
        return history.listen(({ pathname }) => {
          if (pathname === '/home2') {
            dispatch({ type: 'init' });
          }
        });
      }
    }
  }
])
mido.router(() => <App />);
mido.run(document.getElementById('app'));App.js
import React from 'react';
import { midoRedux } from 'mido-react';
const {
  connect
} = midoRedux;
@connect(state => ({ number: state.home.number }))
class Home extends React.Component {
  render() {
    return (
      <div>
        home
        数字
        {this.props.number}
        <div onClick={() => { this.props.history.push('/home2') }}>点我跳转</div>
        <div onClick={() => { this.props.dispatch({ type: 'add', data:{number: 1} }) }}>点我+1</div>
        <div onClick={() => { this.props.dispatch({ type: 'reduce' }) }}>点我-1</div>
      </div>
    )
  }
}
export default Home;Router
- Routers.js
 - 导入router文件
 
export default [
  {
    path: '/',
    exact: true,
    component: require('../page/home1').default
  },
  {
    path: '/home2',
    component: require('../page/home2').default
  }
]- 自行添加router
 
import Mido, { reactRouterDom } from 'mido-react';
import App from './App';
const {
  BrowserRouter,
  Route
} = reactRouterDom;
***省略部分***
mido.router(() => 
    <BrowserRouter>
      <Route path="/" component={App} />
    </BrowserRouter>
)example
1.0.2
7 years ago
1.0.1
7 years ago
1.0.0
7 years ago
1.0.0-beta6
7 years ago
1.0.0-beta5
7 years ago
1.0.0-beta4
7 years ago
1.0.0-beta3
7 years ago
1.0.0-beta2
7 years ago
1.0.0-beta1
7 years ago