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

資訊專欄INFORMATION COLUMN

和我一起入坑-React-Native-加入Redux的TodoList

LucasTwilight / 993人閱讀

摘要:之前寫了一篇沒有加入的的小博文。一拆分結構根據自己的習慣和固定套路,拆分目錄結構和組件結構。把的導航組件集中放在純粹是個人習慣。二代碼實現入口文件是用來做的數據持久化。添加事項后要通知其他組件更新數據。

讀前須知

這個項目是第一次使用Redux的實例,并不具有專業性的理論知識。純粹分享一次開發過程與心得。之前寫了一篇沒有加入Redux的React Native ToDoList的小博文。這個項目也是在原來的基礎上進行裝修完成的。目的是為了體驗一下高深莫測的Redux。
總之,在各位網友的友情支持下,我依然沒有看懂redux數據流的走向,勉勉強強通了一點。

(一)拆分結構

根據自己的習慣和固定套路,拆分目錄結構和組件結構。

├── public
├── todos-redux 
│?? ├── actions                             
│?? │?? └── index.js             
│?? ├── components
│?? │?? ├── todoItem.js
│?? │?? └── todoList.js
│?? ├── containers
│?? │?? ├── add.js
│?? │?? ├── all.js
│?? │?? ├── completed.js
│?? │?? └── incomplete.js
│?? ├── reducers
│?? │?? ├── index.js
│?? │?? └── todos.js
│?? ├── store                             
│?? │?? └── configureStore.js 
│?? ├── utils                             
│?? │?? └── utils.js 
│?? ├── index.js
│?? ├── router.js

把react-navigation的導航組件集中放在router.js純粹是個人習慣。
components中的組件是展示組件,不直接使用Redux。而containers中的是直接使用 Redux的組件。在這里可以看成components是containers的子組件。

(二)代碼實現 入口文件

redux-persist是用來做redux的數據持久化。使用方法直接參考在GitHub上的基本示例。這里的代碼基本上都是固定套路。

// index.js
import React, {Component} from "react"
import { Provider } from "react-redux"
import { TodosReduxStack } from "./router"

import { PersistGate } from "redux-persist/integration/react"
import configureStore from "./store/configureStore"
const { persistor, store } = configureStore()
export default class TodolistRedux extends Component {
  render(){
    return (
      
        
          
          
      
    )
  }
}
創建Action
// action/index.js
import Utils from "../utils/utils"

export const addTodo = (text) => {
  return {
    type: "ADD_TODO",
    id: Utils.uniqueId(),
    content: text
  }
}

export const toggleTodo = (id) => {
  return{
    type:"TOGGLE_TODO",
    id
  }
}
Reducers
// reducers/todos.js
var initState = [];
const todos = (state = initState, action)=>{
  switch(action.type){
    case "ADD_TODO":
      return[
        ...state,
        {
          id: action.id,
          content: action.content,
          completed: false
        }
      ]
    case "TOGGLE_TODO":
      return state.map((t) => {
         if (t.id !== action.id) {
          return t
         } 
         return Object.assign({},t,{completed:!t.completed})
        })
      
    default:
      return state
  }
}

export default todos
容器組件

connect()() 這個寫法叫函數的柯里化,漲知識啦。

// containers/all.js
const mapStateToprops = (state) => {
  return {
    todos: state.todos
  }
}

const mapDispatchToProps = (dispatch) =>{
  return {
    onTodoClick: (id) => {
      dispatch(toggleTodo(id))
    }
  }
}

export default connect(mapStateToprops, mapDispatchToProps)(AllScreen)

使用filter函數過濾數組,返回指定的值,這個地方有點雞肋哈,但是我不會其他的寫法了。

// containers/completed.js
const mapStateToprops = (state) => {
  return {
    todos: state.todos.filter(t => t.completed)
  }
}
(三)使用Redux前后對比

沒有使用Redux之前,項目使用了React Native內置的DeviceEventEmitter方法。添加事項后要通知其他組件更新數據。還大量使用了AsyncStorage做數據的持久化,每一次的數據更新都需要用到它。如果是在稍復雜的項目中這樣寫,會死翹翹的!使用Redux 和 redux-persist 可以輕松實現這個功能,效果是明顯的。在已完成頁面將事項切換為未完成,該事項會直接消失,跑到未完成頁面中,這個地方并不需要做額外的處理。

說在后面的話

這種連個圖都沒有也沒有深入講解redux的文字都敢發出來,真的是表臉 (手動滑稽)
完整的項目在這里GitHub Todos Redux。

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

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

相關文章

  • 實例講解react+react-router+redux

    摘要:而函數式編程就不一樣了,這是模仿我們人類的思維方式發明出來的。數據流在中,數據的流動是單向的,即從父節點傳遞到子節點。數據流嚴格的單向數據流是架構的設計核心。 前言 總括: 本文采用react+redux+react-router+less+es6+webpack,以實現一個簡易備忘錄(todolist)為例盡可能全面的講述使用react全家桶實現一個完整應用的過程。 代碼地址:Re...

    RiverLi 評論0 收藏0
  • dva框架使用詳解及Demo教程

    摘要:框架的使用詳解及教程在前段時間,我們也學習講解過框架的基本使用,但是有很多同學在交流群里給我的反饋信息說,框架理解上有難度,看了之后還是一臉懵逼不知道如何下手,很多同學就轉向選擇使用框架。 dva框架的使用詳解及Demo教程 在前段時間,我們也學習講解過Redux框架的基本使用,但是有很多同學在交流群里給我的反饋信息說,redux框架理解上有難度,看了之后還是一臉懵逼不知道如何下手,很...

    bergwhite 評論0 收藏0
  • Redux來進行組件間通訊

    摘要:用來進行組件間通訊地址疑惑之前在做項目的時候,一直會遇到一個困擾我的問題,兩個互相獨立的子組件如何通訊假設現在結構如下是一個組件,里面有一個刪除操作,點擊添加備注時會彈出模態框,讓用戶進行填寫。 用Redux來進行組件間通訊 demo地址 疑惑 之前在做項目的時候,一直會遇到一個困擾我的問題,兩個互相獨立的子組件如何通訊? 假設現在結構如下 showImg(https://segmen...

    lemanli 評論0 收藏0

發表評論

0條評論

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