Taro3.2.8+Dva.js+taroui搭建微信小程序


  1. 微信開發(fā)者工具
  2. 安裝Node

使用 npm 或者 yarn 全局安裝 @tarojs/cli

# 使用 npm 安裝 CLI
$ npm install -g @tarojs/cli# OR 使用 yarn 安裝 CLI
$ yarn global add @tarojs/cli# OR 安裝了 cnpm,使用 cnpm 安裝 CLI
$ cnpm install -g @tarojs/cli

查看 Taro 全部版本信息
可以使用 npm info 查看 Taro 版本信息,在這里我們可以看到當前最新版本

npm info @tarojs/cli

使用命令創(chuàng)建模板項目:

$ taro init myApp

npm 5.2+ 也可在不全局安裝的情況下使用 npx 創(chuàng)建模板項目:

$ npx @tarojs/cli init myApp

在這里插入圖片描述
使用命令進行編譯,編譯好了之后,下載并打開微信開發(fā)者工具,然后選擇項目根目錄預(yù)覽。愛掏網(wǎng) - it200.com

npm run dev:weapp

在這里插入圖片描述


安裝 react-redux ,大部分文檔說安裝tarojs/redux,但是這個包在taro3.x已經(jīng)消失了,所以這里我們安裝 react-redux

cnpm i --save react-redux

安裝dva-coredva-loading
dva-core 封裝了reduxredux-sage的一個插件
dva-loading 管理頁面的loading狀態(tài)

cnpm i --save dva-core dva-loading

dva需要掛載所有的models,所以在src目錄創(chuàng)建models目錄,并在models目錄下的index.js返回項目中創(chuàng)建的所有model

// src/models/index.js
// dva需要掛載所有的models
import users from '../pages/index/model'export default [users, // users為項目中創(chuàng)建的model
];

model 的結(jié)構(gòu)如下:

// src/pages/index/modelexport default {namespace: 'users',state: {title: 'Hello World'},effects: {},reducers: {save(state, { payload }) {return { ...state, ...payload };},},
};

在src目錄下創(chuàng)建utils目錄,并在utils目錄里創(chuàng)建dva.js文件

// src/dva.js
import { create } from 'dva-core';
import createLoading from 'dva-loading';let app;
let store;
let dispatch;function createApp(opt){// 創(chuàng)建應(yīng)用,返回dva實例app = create(opt);// 配置插件 createLoading是解決異步加載的過渡問題app.use(createLoading({}));if(!global.registered){// 注冊modelopt.models.forEach(model => app.model(model));}global.registered = true;// 啟動應(yīng)用app.start();store = app._store;app.getStore = () => store;dispatch = store.dispatch;app.dispatch = dispatch;return app;
}
export default {createApp,getDispatch: () => {return app.dispatch;}
}

在入口文件 app.js 里使用 dva.js 返回的方法創(chuàng)建一個 app 獲取 store ,并將 store 掛載到Provider 容器里面

// src/app.jsimport { Component } from 'react'
import dva from './utils/dva'
import { Provider } from 'react-redux'
import models from './models'
import './app.less'const dvaApp = dva.createApp({initialState: {},models
})
const store = dvaApp.getStore();
class App extends Component {componentDidMount () {}componentDidShow () {}componentDidHide () {}componentDidCatchError () {}// this.props.children 是將要會渲染的頁面render () {return Provider store={store}>{this.props.children}/Provider>}
}export default App

以上,完成 dva 配置

驗證配置的 dva 是否可用,在 pages/index/index.jsx 使用 connect 連接 model和組件,并打印this.props

// pages/index/index.jsximport { Component } from 'react'
import { View, Text } from '@tarojs/components'
import { connect } from 'react-redux'
import './index.less'@connect(({users})=>({users
}))
export default class Index extends Component {componentWillMount () { }componentDidMount () { }componentWillUnmount () { }componentDidShow () { }componentDidHide () { }render () {console.log(this.props);return (View className='index'>Text>Hello ChenMengjie!/Text>/View>)}
}

this.props里面若存在model里面的state,則連接成功!


安裝 taro-ui

cnpm i --save taro-ui@3.0.0-alpha.3

引入組件樣式的三種方式:


  • 全局引入樣式(JS中),在入口文件引入所有樣式:

import 'taro-ui/dist/style/index.scss'

  • 全局引入樣式(CSS中)

@import "~taro-ui/dist/style/index.scss";

  • 按需引入,在頁面樣式或全局樣式中 import 需要的組件樣式

@import "~taro-ui/dist/style/components/button.scss";

// src/app.jsimport { Component } from 'react'
import { Provider } from 'react-redux'
import 'taro-ui/dist/style/index.scss'
import dva from './utils/dva'
import models from './models'
import './app.less'const dvaApp = dva.createApp({initialState: {},models
})
const store = dvaApp.getStore();
class App extends Component {componentDidMount () {}componentDidShow () {}componentDidHide () {}componentDidCatchError () {}// this.props.children 是將要會渲染的頁面render () {return Provider store={store}>{this.props.children}/Provider>}
}export default App

// src/pages/index/index.jsximport { Component } from 'react'
import { View, Text } from '@tarojs/components'
import { AtTabBar } from 'taro-ui'
import { connect } from 'react-redux'
import './index.less'@connect(({users})=>({users
}))
class Index extends Component {componentWillMount () { }componentDidMount () { }componentWillUnmount () { }componentDidShow () { }componentDidHide () { }render () {console.log(this.props);return (View className='index'>Text>Hello world!/Text>AtTabBar fixedtabList={[{title: '首頁', iconType: 'home'},{title: '我的', iconType: 'user'}]}/>/View>)}
}
export default Index;

在這里插入圖片描述


Taro 官網(wǎng)


聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。
發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 秋葵视频在线免费观看| free性欧美另类高清| 欧美黑人又粗又大又爽免费| 国产美女高清**毛片| 亚洲国产欧美国产综合一区| 激情综合网五月激情| 日本一区二区三区不卡在线视频 | 高清成人爽a毛片免费网站 | 一级做一级爱a做片性视频视频 | 韩国无码AV片在线观看网站| 成年人在线免费| 伊人久久大香线蕉亚洲| ...91久久精品一区二区三区| 最近中文字幕免费完整国语| 国产一区二区三区内射高清| jizz日本在线观看| 欧美人与物VIDEOS另类| 国产亚洲视频在线观看网址| 一级国产黄色片| 欧美成人国产精品高潮| 国产午夜三级一区二区三| √8天堂资源地址中文在线| 欧美日韩国产va另类| 国产做受视频120秒试看| yy6080新视觉午夜伦被窝| 欧美日韩一区二区三区视视频| 国产在线不卡免费播放| 《溢出》by沈糯在线阅读| 欧美国产日韩久久mv| 国产一区视频在线免费观看| 99福利视频导航| 日韩在线第二页| 免费a级毛片永久免费| 久碰人澡人澡人澡人澡人视频| 成人欧美一区二区三区黑人3p | 欧洲精品久久久AV无码电影| 国产chinasex对白videos麻豆| 97无码人妻福利免费公开在线视频| 日韩欧美无线在码| 人妻久久久一区二区三区| 黑人巨大videos极度另类|