商品管理介面-MerchandiseList

修改程式剛執行的初始畫面

src/navigator.js新增一個MerchandiseList 畫面

import { StackNavigator } from 'react-navigation';

import Home from './containers/Home';
import Counter from './containers/Counter';
import Camera from './components/Camera';
import PersonalInfo from './components/PersonalInfo';
import MerchandiseList from './components/MerchandiseList';
import NewMerchandise from './components/NewMerchandise';

const AppNavigator = new StackNavigator(
  {
    Home: { screen: Home },
    Counter: { screen: Counter },
    Camera: { screen: Camera },
    PersonalInfo: { screen: PersonalInfo },
    MerchandiseList: { screen: MerchandiseList },
    NewMerchandise: { screen: NewMerchandise }
  },
  {
    headerMode: 'screen',
    navigationOptions: {
      header: null
    }
  }
);

export default AppNavigator;

src/reducers/nav.jsroutes 中的routeName 來決定初始畫面

使用Touchable 元件來增加回饋

使用src/components/__data__/merchandise_list.json 作為測試資料

import MOCKDATA from './__data_/merchandise_list.json

  • 測試資料的資料結構

  • FlatList

    • data (資料來源)

    • renderItem (資料如何顯示)

    • keyExtractor (設置每個Item 的 Id)

  • 使用TouchableOpacity 來實現Touch 的回饋與前往特定的頁面

  • 在最下方增加新建商品的按鈕

  • 圖文排版比例的設置 為 2:8

實現長按 item 的 ContextMenu,使用react-native 內建Modal 元件

  • animationType 動畫類型,

    • slide 由下而上出現,而消失則由上而下的消失

    • ·fade淡入淡出的方式

  • visible 是否顯示。

  • onRequestClose 當Android 上的 back 鍵觸發。

  • High Order Component 封裝了元件共用的行為,對行為做reuse ,而非對畫面做reuse

  • 實現connectModal hoc,並把openModal 與 closeModal 傳入,方便WrappedComponent 使用

  • openModal 讓WrappedComponent 可以傳入自定義客製化的modalView

  • openModal 也讓WrappedComponent 當下的context,譬如說當下的list item

  • 此Modal 並非blocking Modal,所以也實現了讓使用者點任意地方可以關掉此Modal,參考TouchableOpacity的部分

    • 建立Modal 的 HOC

    • 加入Context

    • 使用方開始客製化他的畫面

在需要使用此Modal 的Modal 在export 之前,掛上connectModal ,並在item 按下後,開啟Modal ,並傳入自定義的畫面。

在按鈕被按下後,呼叫closeModal 的動作

Last updated

Was this helpful?