创立我的项目的步骤我就不赘述了,官网有具体的步骤
Taro应用文档
提前下载微信开发者工具
前提
初始化好了一个Taro我的项目
步骤
1. 编译运行
npm run dev:weapp
在模拟器中预览
2. 配置dva
2.1 装置 react-redux
npm i --save react-redux
2.2 装置 dva-core dva-loading
- dva-core 封装了redux和redux-sage的一个插件
dva-loading 治理页面的loading状态
npm install --save dva-core dva-loading
2.3 src目录下创立models目录,并在models目录下的index.js返回我的项目中创立的所有model
// dva须要挂载所有的modelsimport users from '../pages/index/model'export default [ users,];
users为pages/index 上面新建的model
其构造就和咱们dva中的model一样
export default { namespace: 'users', state: { title: 'Hello World' }, effects: {}, reducers: { save(state, { payload }) { return { ...state, ...payload }; }, },};
2.4 在src目录下创立utils目录,并在utils目录里创立dva.js文件
import { create } from 'dva-core';import createLoading from 'dva-loading';let app;let store;let dispatch;function createApp(opt){ // 创立利用,返回dva实例 app = create(opt); // 配置插件 createLoading是解决异步加载的过渡问题 app.use(createLoading({})); if(!global.registered){ // 注册model opt.models.forEach(model => app.model(model)); } global.registered = true; // 启动利用 app.start(); store = app._store; app.getStore = () => store; dispatch = store.dispatch; app.dispatch = dispatch; return app;}export default { createApp, getDispatch: () => { return app.dispatch; }}
2.5 在入口文件app.js里应用dva.js返回的办法创立一个app获取store,并将store挂载到Provider容器外面
import { 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
配置实现,检测是否配置胜利
在pages / index / index.jsx中连贯model,并且输入this.props
import { 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 HuangAolin</Text> </View> ) }}
3. 引入taro-ui
npm i --save taro-ui@3.0.0-alpha.3
在app.js引入款式
import 'taro-ui/dist/style/index.scss'
在pages/index/index.jsx中应用组件
import { Component } from 'react'import { View, Text } from '@tarojs/components'import { connect } from 'react-redux'import { AtButton } from 'taro-ui'import './index.less'@connect(({users})=>({ users}))export default class Index extends Component { componentWillMount () { } componentDidMount () { } componentWillUnmount () { } componentDidShow () { } componentDidHide () { } render () { console.log(this.props.users); return ( <View className='index'> <AtButton type='primary'>终于好了</AtButton> </View> ) }}