我用
{
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());