国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

react-native, react-navigation, redux 學習筆記

妤鋒シ / 756人閱讀

摘要:的使用用戶發出函數算出新的重新渲染三大原則單一數據源,利用的形式向下傳播數據流決定只讀,通過修改通過純函數來修改組件狀態,是描述動作的純函數連接和基于全局的,選擇我們要注入的不同的組件分開把注入,讀取方法三劍客先確定一下初始狀

redux的使用

react-native, react, react-redux, react-navigaition, redux-thunk, redux-persist

用戶發出action, reducer函數算出新的state, view重新渲染

三大原則

單一數據源,利用props的形式向下傳播(react數據流決定)

state只讀,通過action修改

通過純函數reducer來修改組件狀態,reducer是描述action動作的純函數

react-redux 連接react和redux
import { connect, Provider } from "react-redux"
connet([mapStateToProps], [mapDispatchToProps], [mergeProps])(App)

mapStateToProps: 基于全局的state,選擇我們要注入的props

不同的組件分開connec

function select(state){
    return{
        // 把state.todos注入,讀取方法: this.props.visibleTodo
        visibleTodo: state.todos
    }
}

const todoApp connect(select)(App)
// export default todoApp
// store = "balabala"

    
redux三劍客
// 先確定一下初始狀態(狀態表示的格式)
export default {
    money: 0,
    lastJob:"no job"
}
ACTION

定義動作,比如搶劫銀行、搬磚,但是怎么搶怎么搬還是reducer來定

/**
 * Created by liuyiman on 2017/7/3.
 */

// 定義一個menoy+的action
function addmoney(money){
    return {
        // 可以用一個文件管理type,之所以是type是因為我的reducer要根據這個來判斷
        type: "ADD_MONEY",
        money
    }
}
function setLastJob(job){
    return {
        type: "SET_JOB",
        job
    }
}
// 定義一個賺錢的方式1 ,搶劫銀行
export function robBank(){
    return (dispatch, getState) => {
        // 賺一百萬
        let { earn } = getState()
        dispatch(addmoney(earn.money + 1000000))
        return dispatch(setLastJob("robber"))
    }
}
// 定義一個賺錢的方式2,建材轉移者
export function moveBrick(){
    return (dispatch, getState) => {
        console.log("s",getState())
        let { earn } = getState()
        // 賺一塊錢
        dispatch(addmoney( earn.money + 1 ))
        dispatch(setLastJob("brick mover"))
    }
}
// 破產,數據清零
export function goBroke() {
    return {
        type: "BROKE",
        money: 0,
        job:"broke"
    }
}
reducers

描述action如何改變store(in fact state)

import { combineReducers } from "redux"
import initializeState from "./initializeState"
// 定義一個reducer
function earn( state = initializeState, action ) {
    switch (action.type) {
        case "ADD_MONEY":
            return{
                ...state,
                money:action.money
            }
        case "SET_JOB":
            return{
                ...state,
                lastJob:action.job
            }
        case "BROKE":
            return{
                ...state,
                money:action.money,
                lastJob:action.job
            }
        default:
            return state
    }
}

export default earn
store

不同的組件可以 connet 到不同的 store

import { createStore, applyMiddleware, compose, combineReducers } from "redux"
import thunkMidlleware from "redux-thunk"
import earn from "./reducers"
import { persistStore, autoRehydrate} from "redux-persist"
import { AsyncStorage } from "react-native"

// base reducer
let baseReducers = {
    earn: earn
}
/*
* 考慮到后面要將react-navigation的reducer加進來,使用redux-persist,所以寫了這個helper
* const store = configStore(reducers)()
* */
const configStore = function (reducers = {}) {
    const rootReducer = combineReducers({
        ...baseReducers,
        ...reducers
    })
    return function (_options = {}) {
        const store = createStore(
            rootReducer,
            _options.initialState,
            compose(
                applyMiddleware(thunkMidlleware),
                autoRehydrate()
            )
        )
        const options = {
            storage: AsyncStorage,
            blacklist: _options.blacklist
        }
        persistStore(store, options)
        return store
    }
    
}

export default configStore
more 中間件 middleware

對store.dispatch的重新定義

在發出action和執行reducer之間,添加了其他功能

redux-thunk

使dispatch可以接受函數說作為參數,使異步的action可以被觸發

// 無論killSomeOne是Action create還是普通的返回{}的action
this.props.dispath(killSomeOne("vincent"))
redux-persist

本地保存store狀態(react-native 本地緩存),可以設置白名單黑名單自動保存等等,特別好用

/*
* 考慮到后面要將react-navigation的reducer加進來,使用redux-persist,所以寫了這個helper
* const store = configStore(reducers)()
* */
const configStore = function (reducers = {}) {
    const rootReducer = combineReducers({
        ...baseReducers,
        ...reducers
    })
    return function (_options = {}) {
        const store = createStore(
            rootReducer,
            _options.initialState,
            compose(
                applyMiddleware(thunkMidlleware),
                autoRehydrate()
            )
        )
        const options = {
            storage: AsyncStorage,
            blacklist: _options.blacklist
        }
        persistStore(store, options)
        return store
    }
    
}

export default configStore
react-navigation + redux
import React, { Component } from "react";
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button
} from "react-native";
// navigation
import { TabNavigator, addNavigationHelpers, StackNavigator } from "react-navigation"
// for connect redux and react
import { Provider,connect } from "react-redux"
import configStore from "./redux/store"
// import actions
import {moveBrick, robBank, goBroke} from "./redux/actions"
// initialState
import initialState from "./redux/store"

// 賺錢頁面
class Earn extends Component {
  constructor(props) {
    super(props)
  }
  render(){
    const { earn, dispatch } = this.props
    console.log( "saa",initialState,earn )
    return(
        
          先賺一個億!
          my money$:{earn.money}
          my last job:{earn.lastJob}
          

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83870.html

相關文章

  • 分享一個用react-native寫的app,適合新手學習react-native

    摘要:安卓系統的信息系統的信息項目部分截圖項目源代碼公共組件首頁所有圖片登錄頁我的頁新聞頁配置省市區文件進入輪播頁項目入口文件項目依賴配置最新生成的文件信息上次打包的版本路由配置文件 github地址:https://github.com/cryingbat/... react-native-app use react-native。Pack of the generated apk ins...

    李濤 評論0 收藏0
  • 從 1 到完美,用 js 和 react-native 寫一個 APP

    摘要:從到完美,用和寫一個在年開源了后,緊接著在年就又開源了,就此打開了用和前端技術寫原生之路。對應來看,程序只有兩個部分,和,而部分則分為組件和。所以,在端的純庫無在中同樣適用,如等。應用實例便是使用開發的一個日記。 從 1 到完美,用 js 和 react-native 寫一個 APP facebook 在 2013 年開源了 react 后,緊接著在 2015 年就又開源了 react...

    CollinPeng 評論0 收藏0
  • 和我一起入坑-React-Native-加入Redux的TodoList

    摘要:之前寫了一篇沒有加入的的小博文。一拆分結構根據自己的習慣和固定套路,拆分目錄結構和組件結構。把的導航組件集中放在純粹是個人習慣。二代碼實現入口文件是用來做的數據持久化。添加事項后要通知其他組件更新數據。 讀前須知 這個項目是第一次使用Redux的實例,并不具有專業性的理論知識。純粹分享一次開發過程與心得。之前寫了一篇沒有加入Redux的React Native ToDoList的小博文...

    LucasTwilight 評論0 收藏0
  • 如何使用ReactNative快速開發一個APP

    摘要:鑒于我平常使用的是系統,就決定我只開發安卓客戶端,客戶端我們又招了一個小伙伴。一般來講,安卓系統是這一兩年市面上常用機型配置的系統。 從去年的10月份開始,我的大部分工作重心從傳統的前端開發轉向了使用ReactNative開發APP,在這個過程當中,走過了不少彎路,也遇到了一些技術相關的問題,但總算沒有辜負那些對我信任的人。經歷過痛苦和無助,終于堅持了下來,一個月的時間把產品成功部署上...

    taowen 評論0 收藏0
  • React Native 模仿網易云音樂手機客戶端,兼容安卓和IOS兩個平臺

    摘要:比如安卓平臺在中不能觸屏手動滾動。主要的功能界面模塊大部分主要是展示的,網易云的頁面和功能實在是太多了,由于時間關系,并沒有把所有的功能都做完整,后續會陸續加上其他的功能。各部分模塊首頁展示音樂播放,包括動畫,歌詞同步等。 React Native 模仿網易云音樂手機客戶端,兼容安卓和IOS兩個平臺。 GitHub 完整源碼地址https://github.com/yezihaohao...

    妤鋒シ 評論0 收藏0

發表評論

0條評論

妤鋒シ

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<