浏览代码

Fix incorrect React Component state assignment

master
Lyubo Marinov 7 年前
父节点
当前提交
1834fc63d2
共有 1 个文件被更改,包括 18 次插入13 次删除
  1. 18
    13
      react/features/invite/components/InviteButton.web.js

+ 18
- 13
react/features/invite/components/InviteButton.web.js 查看文件

@@ -75,8 +75,8 @@ class InviteButton extends Component {
75 75
      */
76 76
     componentWillReceiveProps(nextProps) {
77 77
         if (this.props._isDialOutAvailable !== nextProps._isDialOutAvailable
78
-            || this.props._isAddToCallAvailable
79
-                !== nextProps._isAddToCallAvailable) {
78
+                || this.props._isAddToCallAvailable
79
+                    !== nextProps._isAddToCallAvailable) {
80 80
             this._updateInviteItems(nextProps);
81 81
         }
82 82
     }
@@ -185,7 +185,7 @@ class InviteButton extends Component {
185 185
             );
186 186
         }
187 187
 
188
-        this.state = {
188
+        const nextState = {
189 189
             /**
190 190
              * The list of invite options.
191 191
              */
@@ -195,6 +195,13 @@ class InviteButton extends Component {
195 195
                 }
196 196
             ]
197 197
         };
198
+
199
+        if (this.state) {
200
+            this.setState(nextState);
201
+        } else {
202
+            // eslint-disable-next-line react/no-direct-mutation-state
203
+            this.state = nextState;
204
+        }
198 205
     }
199 206
 }
200 207
 
@@ -210,22 +217,20 @@ class InviteButton extends Component {
210 217
  * }}
211 218
  */
212 219
 function _mapStateToProps(state) {
213
-    const { enableUserRolesBasedOnToken } = state['features/base/config'];
214
-
215 220
     const { conference } = state['features/base/conference'];
216
-
221
+    const { enableUserRolesBasedOnToken } = state['features/base/config'];
217 222
     const { isGuest } = state['features/jwt'];
218 223
 
219 224
     return {
220
-        _isAddToCallAvailable: !isGuest
221
-            && isInviteOptionEnabled(ADD_TO_CALL_OPTION),
225
+        _isAddToCallAvailable:
226
+            !isGuest && isInviteOptionEnabled(ADD_TO_CALL_OPTION),
222 227
         _isDialOutAvailable:
223 228
             getLocalParticipant(state).role === PARTICIPANT_ROLE.MODERATOR
224
-            && conference && conference.isSIPCallingSupported()
225
-            && isInviteOptionEnabled(DIAL_OUT_OPTION)
226
-            && (!enableUserRolesBasedOnToken || !isGuest)
229
+                && conference && conference.isSIPCallingSupported()
230
+                && isInviteOptionEnabled(DIAL_OUT_OPTION)
231
+                && (!enableUserRolesBasedOnToken || !isGuest)
227 232
     };
228 233
 }
229 234
 
230
-export default translate(connect(
231
-    _mapStateToProps, { openDialog })(InviteButton));
235
+export default translate(connect(_mapStateToProps, { openDialog })(
236
+    InviteButton));

正在加载...
取消
保存