我用

{

React-Native : 0.55.4,

React-Navigation: 2.0.1

}

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

dimensions.get('window').width

一些 property 的大小

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

我有2个解决方案,

react-native-extended-stylesheet

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

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

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

在第二个解决方案中,我为维度中的set 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

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

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

在componentDidMount中设置侦听器时也会出现此错误

Dimensions.addEventListener("change", this.changeStyle());

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐