2017-11-11 131 views
0

我現在正在使自己熟悉React。我選擇了國家管理的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, {}) 
    }) 

我目前的解決方法:

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

使用這種method's的反應週期,你可以選擇呼叫呈現不。

例如,您可以使用shouldComponentUpdate();監聽更新,並在您不想渲染新視圖時返回false。

相關問題