2017-11-11 130 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。

相关问题