Как предотвратить установку компонентов React, если опоры пусты? - PullRequest
1 голос
/ 20 января 2020

У меня есть компонент, который работает со сторонней библиотекой, и мне нужно добавить прослушиватель после монтирования компонента. По какой-то причине я не могу добавить прослушиватели без данных, которые асинхронно выбираются с сервера и передаются через функцию 'connect' (из реагирования-редукции). Как предотвратить установку компонентов React, если реквизиты пусты?

1 Ответ

1 голос
/ 20 января 2020

После некоторых исследований я не нашел решения, поэтому я написал свое:

// No Props No Mount
import React from 'react';
import _ from 'lodash';

function NPNM(WrappedComponent) {
  return class extends React.Component {
    render() {
      const { children } = this.props;
      const data = _.omit(this.props, children);
      let hasProps = true;

      _.forEach(data, elm => {
        if (_.isEmpty(elm) && !_.isFunction(elm)) hasProps = false;
      });

      return hasProps ? <WrappedComponent {...this.props} /> : <></>;
    }
  };
}

export default NPNM;

Его следует использовать как

connect(mapStateToProps, mapDispatchToProps)(NPNM(YourComponent));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...