mirror.js 整合redux的好工具

來源:互聯網
上載者:User

標籤:5.6   1.0   tool   return   ons   rom   etc   start   管理   

mirror.js 很簡單,讓state管理更方便了,沒有新增api,值 得使用

https://github.com/yurizhang/mirror

 

 

package.json

{"name": "webpack","version": "0.1.0","private": true,"dependencies": {"axios": "^0.16.2","cross-env": "^5.0.1","element-react": "^1.0.19","element-theme-default": "^1.3.7","isomorphic-unfetch": "^2.0.0","mirrorx": "^0.2.5","next": "^3.0.0-beta16","react": "^15.6.1","react-dom": "^15.6.1","react-redux": "^5.0.5","redux": "^3.7.0"},"devDependencies": {"react-scripts": "^1.0.7","redux-devtools": "^3.4.0"},"scripts": {"dev": "node ./server.js","next_build": "next build","next_start": "node ./server-prd.js","start": "react-scripts start","build": "react-scripts build","test": "react-scripts test --env=jsdom","eject": "react-scripts eject"}}

 

import React from ‘react‘import mirror, {actions, connect, render} from ‘mirrorx‘// 聲明 Redux state, reducer 和 action,// 所有的 action 都會以相同名稱賦值到全域的 actions 對象上mirror.model({    name: ‘app‘,    initialState: {      total:1,      list: [70,10]     },    reducers: {  //用來修改state      increment(state,data) {        console.log("state increment:"+data)        console.log(state)        let list=state.list;        console.log(list)        list.push(Math.floor(Math.random()*100));        //let tmpArray=state.list ||[];        return {   //這裡返回的要和你state結構是一樣的          total:state.total+1,          list: list        }      },      decrement(state) {        return {          total:state.total-1,          list: [88]          }      }    },    effects: {      async incrementAsync() {   //用來非同步修改state        await new Promise((resolve, reject) => {          setTimeout(() => {            resolve()          }, 1000)        })        actions.app.increment()      }    }  })    const App = props => {    console.log("props")    console.log(props)    return (      <div id="counter-app">        <h1>{props.app.total}</h1>        <h1>{props.app.list}</h1>        <div className="btn-wrap">          <button onClick={() => actions.app.decrement()}>-</button>          <button onClick={() => actions.app.increment(‘ssssss‘)}>+</button>          <button style={{width: 100}} onClick={() => actions.app.incrementAsync()}>+ Async</button>        </div>      </div>    )  }    const  Mirror=connect(state => {    console.log("state")    console.log(state)    return {      app:state.app,   //mapToProps 把state做為prop送給render      //total: state.app.total,      //data: state.app.list           }  })(App)  render(<Mirror/>, document.getElementById(‘mirror‘))

 

mirror.js 整合redux的好工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.