<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Taro集成Redux快速上手的方法示例

        來源:懂視網 責編:小采 時間:2020-11-27 22:12:40
        文檔

        Taro集成Redux快速上手的方法示例

        Taro集成Redux快速上手的方法示例:前言的前言 最近被一款來自京東凹凸實驗室的多終端開發框架Taro吸粉了,官方對 Taro 的簡介是使用React語法,一鍵生成多終端應用(包括小程序 / H5 / 快應用 / RN 等),而目前 Github 的 Star 也達到了非常可觀的數量:4k+。對此,筆者也嘗了把鮮,體驗了
        推薦度:
        導讀Taro集成Redux快速上手的方法示例:前言的前言 最近被一款來自京東凹凸實驗室的多終端開發框架Taro吸粉了,官方對 Taro 的簡介是使用React語法,一鍵生成多終端應用(包括小程序 / H5 / 快應用 / RN 等),而目前 Github 的 Star 也達到了非常可觀的數量:4k+。對此,筆者也嘗了把鮮,體驗了

        前言的前言

        最近被一款來自京東凹凸實驗室的多終端開發框架Taro吸粉了,官方對 Taro 的簡介是使用React語法,一鍵生成多終端應用(包括小程序 / H5 / 快應用 / RN 等),而目前 Github 的 Star 也達到了非常可觀的數量:4k+。對此,筆者也嘗了把鮮,體驗了下如何使用Taro寫微信小程序。感覺還是十分靈活易用(一氣呵成,都沒遇到bug!),并且 Taro 還集成了 Redux,解決了小程序沒有數據流框架的痛點。

        這里貼一個 Taro 的官方文檔,有興趣的同行們可以了解下~也可以和我交流~嘿嘿

        前言

        Redux是JavaScript 狀態容器,提供可預測化的狀態管理。一般來說,規模比較大的小程序,頁面狀態,數據緩存,需要管理的東西太多,這時候引入Redux可以方便的管理這些狀態,同一數據,一次請求,應用全局共享。

        而Taro也非常友好地為開發者提供了移植的Redux。

        依賴

        為了更方便地使用Redux,Taro提供了與react-redux API 幾乎一致的包 @tarojs/redux 來讓開發人員獲得更加良好的開發體驗。

        開發前需要安裝redux@tarojs/redux以及一些需要用到的中間件

        $ yarn add redux @tarojs/redux redux-action redux-logger
        # 或者使用 npm
        $ npm install --save redux @tarojs/redux redux-action redux-logger

        示例

        下面通過實現一個Todolist快速上手Redux。

        1. 目錄結構

        首先通過目錄劃分我們的store/reducers/actions

        分別在文件夾里創建index.js,作為三個模塊的主文件。reducersactions里面的內容我們需要規劃好功能之后再來處理。

        // store/index.js
        
        import { createStore, applyMiddleware } from 'redux'
        
        // 引入需要的中間件
        import thunkMiddleware from 'redux-thunk'
        import { createLogger } from 'redux-logger'
        
        // 引入根reducers
        import rootReducer from '../reducers'
        
        const middlewares = [
         thunkMiddleware,
         createLogger()
        ]
        
        // 創建store
        export default function configStore () {
         const store = createStore(rootReducer, applyMiddleware(...middlewares))
         return store
        }
        

        2. 編寫Todos

        首先在app.js中引入一開始定義好的store,使用@tarojs/redux中提供的Provider組件將前面寫好的store接入應用中,這樣一來,被Provider包裹的頁面都能共享到應用的store

        import Taro, { Component } from '@tarojs/taro'
        import { Provider } from '@tarojs/redux'
        
        import configStore from './store'
        import Index from './pages/index'
        
        import './app.scss'
        
        const store = configStore()
        
        class App extends Component {
         ...
         render () {
         return (
         <Provider store={store}>
         <Index />
         </Provider> 
         )
         }
        }

        接下來就可以正式開始規劃Todos應用的主要功能了。

        首先我們可以新建constants文件夾來定義一系列所需的action type常量。例如Todos我們可以先新增ADDDELETE兩個action type來區分新增和刪除Todo指令。

        // src/constants/todos.js
        
        export const ADD = 'ADD'
        export const DELETE = 'DELETE'

        然后開始創建處理這兩個指令的reducer

        // src/reducers/index.js
        
        import { combineReducers } from 'redux'
        import { ADD, DELETE } from '../constants/todos'
        
        // 定義初始狀態
        const INITIAL_STATE = {
         todos: [
         {id: 0, text: '第一條todo'}
         ]
        }
        
        function todos (state = INITIAL_STATE, action) {
         // 獲取當前todos條數,用以id自增
         let todoNum = state.todos.length
         
         switch (action.type) { 
         // 根據指令處理todos
         case ADD: 
         return {
         ...state,
         todos: state.todos.concat({
         id: todoNum,
         text: action.data
         })
         }
         case DELETE:
         let newTodos = state.todos.filter(item => {
         return item.id !== action.id
         })
         
         return {
         ...state,
         todos: newTodos
         }
         default:
         return state
         }
        }
        
        export default combineReducers({
         todos
        })
        

        接著在action中定義函數對應的指令。

        // src/actions/index.js
        
        import { ADD, DELETE } from '../constants/todos'
        
        export const add = (data) => {
         return {
         data,
         type: ADD
         }
        }
        
        export const del = (id) => {
         return {
         id,
         type: DELETE
         }
        }
        

        完成上述三步之后,我們就可以在Todos應用的主頁使用相應action修改并取得新的store數據了。來看一眼Todos的index.js

        // src/pages/index/index.js
        
        import Taro, { Component } from '@tarojs/taro'
        import { View, Input, Text } from '@tarojs/components'
        import { connect } from '@tarojs/redux'
        import './index.scss'
        
        import { add, del } from '../../actions/index'
        
        class Index extends Component {
         config = {
         navigationBarTitleText: '首頁'
         }
        
         constructor () {
         super ()
        
         this.state = {
         newTodo: ''
         }
         }
        
         saveNewTodo (e) {
         let { newTodo } = this.state
         if (!e.detail.value || e.detail.value === newTodo) return
        
         this.setState({
         newTodo: e.detail.value
         })
         }
        
         addTodo () {
         let { newTodo } = this.state
         let { add } = this.props
         
         if (!newTodo) return
        
         add(newTodo)
         this.setState({
         newTodo: ''
         })
         }
        
         delTodo (id) {
         let { del } = this.props
         del(id)
         }
        
         render () {
         // 獲取未經處理的todos并展示
         let { newTodo } = this.state
         let { todos, add, del } = this.props 
        
         const todosJsx = todos.map(todo => {
         return (
         <View className='todos_item'><Text>{todo.text}</Text><View className='del' onClick={this.delTodo.bind(this, todo.id)}>-</View></View>
         )
         })
        
         return (
         <View className='index todos'>
         <View className='add_wrap'>
         <Input placeholder="填寫新的todo" onBlur={this.saveNewTodo.bind(this)} value={newTodo} />
         <View className='add' onClick={this.addTodo.bind(this)}>+</View>
         </View>
         <View>{ todosJsx }</View> 
         </View>
         )
         }
        }
        
        export default connect (({ todos }) => ({
         todos: todos.todos
        }), (dispatch) => ({
         add (data) {
         dispatch(add(data))
         },
         del (id) {
         dispatch(del(id))
         }
        }))(Index)
        

        最后來看一眼實現的效果~~

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Taro集成Redux快速上手的方法示例

        Taro集成Redux快速上手的方法示例:前言的前言 最近被一款來自京東凹凸實驗室的多終端開發框架Taro吸粉了,官方對 Taro 的簡介是使用React語法,一鍵生成多終端應用(包括小程序 / H5 / 快應用 / RN 等),而目前 Github 的 Star 也達到了非常可觀的數量:4k+。對此,筆者也嘗了把鮮,體驗了
        推薦度:
        標簽: 集成 Taro redux
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲人成免费电影| 亚洲AV福利天堂一区二区三| 女人18毛片免费观看| 午夜精品在线免费观看| 亚洲一区中文字幕在线观看| 朝桐光亚洲专区在线中文字幕 | 久久久久免费看黄A片APP| 欧美最猛性xxxxx免费| 亚洲色欲色欲www| aa级女人大片喷水视频免费| 99在线精品免费视频九九视| 免费在线黄色网址| 亚洲理论精品午夜电影| aaa毛片视频免费观看| 久久亚洲AV无码精品色午夜麻| 免费黄网站在线看| 免费a级毛片网站| 高清永久免费观看| 四虎免费影院4hu永久免费| 亚洲福利秒拍一区二区| 台湾一级毛片永久免费| 亚洲A∨无码一区二区三区| 8888四色奇米在线观看免费看| 亚洲色偷拍区另类无码专区| 亚洲成a人片在线观| 成人av片无码免费天天看| 亚洲av鲁丝一区二区三区| 一二三四免费观看在线电影 | 国产成人免费a在线视频app| 亚洲高清美女一区二区三区| 人人爽人人爽人人片av免费| 久久精品无码一区二区三区免费| 精品久久久久久亚洲中文字幕 | 美女巨胸喷奶水视频www免费| 久久亚洲国产精品| 性感美女视频免费网站午夜 | 在线视频亚洲一区| 免费无码成人AV在线播放不卡| 亚洲一区二区三区在线观看精品中文| 亚洲日本一线产区和二线| 亚洲人成免费网站|