当屏幕或尺寸改变大小时,如何在React Native触发器中设置EventListener

时间:2018-05-17 10:47:44

标签: javascript react-native react-native-android

我用

{ 
  React-Native : 0.55.4,
  React-Navigation: 2.0.1
}

现在我想在React Native App(android)中制作响应式视图,例如我使用

 dimensions.get('window').width

表示某些财产的大小

现在当我更改设备中的屏幕尺寸(方向(横向|纵向))时,当发生这种情况时,我会触发一些处理程序再次渲染View并再次初始StyleSheet以获取尺寸的新值传递给样式

我有2个解决方案,

1-使用扩展StyleSheets来实现React Native npm包(https://github.com/vitalets/react-native-extended-stylesheet#demo

  react-native-extended-stylesheet

2-使用static dimensions.addEventListener(type,handler)

------------------------------------------------------

在第一个解决方案中,当我以不同的方向(横向/纵向)重新渲染应用程序时,一切运行良好,但如果我更改方向样式未更改

并且在第二个解决方案中,我在维度中创建了设置EventListener的处理程序,并且还尝试这种方式来设置Handler on - > onLayout

 handleLayout(event) {

    if (this.state.dimensions) return // layout was already called
    let {width, height} = event.nativeEvent.layout;
    this.setState({dimensions: {width, height}})

   }

并将此处理程序设置为我的Component

  <View  onLayout={this.handleLayout} />

但是当我改变方向时,得到这个错误

undefined is not an object (evaluating subscription.listener.apply )

在componentDidMount

中设置侦听器时也会出现此错误
 Dimensions.addEventListener("change", this.changeStyle());

0 个答案:

没有答案