2017-11-11 2 views
0

私は現在、自分自身にリアクションを熟知しています。私は状態管理のためにmobx-state-treeを選んだ。React-Nativeでrender()メソッドを呼び出さない型を設定することはできますか? mobx状態ツリー

私はAndroidプロジェクトでMVPパターンを使用していたので、mobx-state-treeにも同じ原則を適用します。

私は現在どのように実装されていますか。

ただし、このモデルではScreenView実装を定義したいと思います。

render()イベントをトリガーしないモデルタイプを定義する方法はありますか?

私の希望する結果:

const AuthScreenModel = types 
    .model('AuthStore', { 
     screen: types.enumeration('Screen', ['auth', 'verification', 'name']), 
     screenView: types.norefresh(ScreenViewInterface), 
     phoneModel: types.optional(PhoneModel, {}) 
    }) 

私の現在の回避策:このmethod'sのを使用して

const AuthScreenModel = types 
    .model('AuthStore', { 
     screen: types.enumeration('Screen', ['auth', 'verification', 'name']), 
     phoneModel: types.optional(PhoneModel, {}) 
    }) 
    .views((self: any) => { 
     self.screenView = null 
     return { 
      getScreenIndex(): number { 
       if (self.screen === 'verification') 
        return 1 
       if (self.screen === 'name') 
        return 2 
       return 0 
      } 
     } 
    }) 
    .actions((self: any) => { 
     return { 
      setScreen(screen: string) { 
       self.screen = screen 
      }, 
      setScreenIndex(screenIndex: number) { 
       self.screenIndex = screenIndex 
      }, 
      setScreenView(screenView: AuthScreenView) { 
       self.screenView = screenView 
      }, 
      swipeNext() { 
       if (self.screenView) { 
        self.screenView.scrollBy(self.getScreenIndex() < 2 ? 1 : 0) 
       } 
      }, 
      swipePrev() { 
       if (self.screenView) { 
        self.screenView.scrollBy(self.getScreenIndex() > 0 ? -1 : 0) 
       } 
      } 
     } 
    }) 
const AuthScreenStore = AuthScreenModel.create({ 
    screen: 'auth', 
    phoneModel: PhoneModel.create({ 
     country: CountryModel.create({}), 
     phoneNumber: '' 
    }) 
}) 

答えて

0

は、あなたがレンダリングかどうかを呼び出すために選択することができますライフサイクルを反応させます。

たとえば、shouldComponentUpdate()を使用できます。更新をリッスンし、新しいビューをレンダリングしたくない場合はfalseを返します。

関連する問題