Merge pull request #3752 from matrix-org/t3chguy/fix_react_complaining

Add bunch of null-guards and similar to fix React Errors/complaints
pull/21833/head
Michael Telatynski 2020-01-06 21:42:27 +00:00 committed by GitHub
commit 653f31b22d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 4 deletions

View File

@ -56,14 +56,20 @@ class ItemRange {
}
export default class LazyRenderList extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
static getDerivedStateFromProps(props, state) {
const range = LazyRenderList.getVisibleRangeFromProps(props);
const intersectRange = range.expand(props.overflowMargin);
const renderRange = range.expand(props.overflowItems);
const listHasChangedSize = !!state && renderRange.totalSize() !== state.renderRange.totalSize();
const listHasChangedSize = !!state.renderRange && renderRange.totalSize() !== state.renderRange.totalSize();
// only update render Range if the list has shrunk/grown and we need to adjust padding OR
// if the new range + overflowMargin isn't contained by the old anymore
if (listHasChangedSize || !state || !state.renderRange.contains(intersectRange)) {
if (listHasChangedSize || !state.renderRange || !state.renderRange.contains(intersectRange)) {
return {renderRange};
}
return null;

View File

@ -55,6 +55,8 @@ export default createReactClass({
hover: false,
// The profile data of the group if this.props.tag is a group ID
profile: null,
// Whether or not the context menu is open
menuDisplayed: false,
};
},

View File

@ -32,7 +32,7 @@ export default createReactClass({
return {
busy: false,
ready: false,
isGroupPublicised: null,
isGroupPublicised: false, // assume false as <ToggleSwitch /> expects a boolean
};
},
@ -43,7 +43,7 @@ export default createReactClass({
_initGroupStore: function(groupId) {
this._groupStoreToken = GroupStore.registerListener(groupId, () => {
this.setState({
isGroupPublicised: GroupStore.getGroupPublicity(groupId),
isGroupPublicised: Boolean(GroupStore.getGroupPublicity(groupId)),
ready: GroupStore.isStateReady(groupId, GroupStore.STATE_KEY.Summary),
});
});