我正在处理聊天界面,并希望我的聊天日志项在窗口调整大小时适合屏幕。对于我使用的主列表FlatList
,每个单独的项目都是一个单独的组件。
为此,我使用该方法订阅了resize
andfullscreenchange
事件,window.addEventLister
但在许多情况下仍然无法调整大小,例如离开或进入 macOS 全屏模式时。
还有其他一些我应该订阅或遵循不同方法的活动吗?有没有图书馆可以在一个地方为我提供所有类型的活动?
应要求提供代码片段:
平面列表视图:
export class ChatListItem extends React.Component {
componentDidMount = () => {
window.addEventListener("resize", this.forceUpdate);
window.addEventListener("fullscreenchange", this.forceUpdate);
//Is there anything wrong with doing it the above way?
};
componentWillUnmount = () => {
window.removeEventListener("resize", this.forceUpdate);
window.removeEventListener("fullscreenchange", this.forceUpdate);
};
render = () => {
//My Views which take size using flex:1 / window width and height
};
}
然而,同一个屏幕有一个输入框(Component
由于某种原因我做了一个不同的输入框)并且能够使用相同的逻辑调整大小:
export class ChatInputBox extends React.Component {
componentDidMount = () => {
window.addEventListener("resize", this.forceUpdate);
window.addEventListener("fullscreenchange", this.forceUpdate);
};
componentWillUnmount = () => {
window.removeEventListener("resize", this.forceUpdate);
window.removeEventListener("fullscreenchange", this.forceUpdate);
};
render = () => {
//My Views which take size using flex:1 / window width and height
};
}