React запускает метод getInitialState () при использовании this.props.children - PullRequest
0 голосов
/ 31 января 2020

У меня проблема с жизненным циклом React для моих дочерних компонентов, это очень странная ошибка, и я не уверен, что могло ее вызвать. (Примечание: я вынужден использовать React 15.x из-за унаследованных проблем с общим процессом приложения и сборки, поэтому нет JXS или перехватчиков):

Это работает как задумано (метод getInitialState не вызывается в потомок, когда состояние «dnd» изменяется в родительском элементе и затем передается потомку как подпорка):

      renderChildren: function(that) {
        return that.props.children.map((child, idx) => {
          return React.cloneElement(child, { 'dnd': that.state.dnd }, null)
        });
      },

      regionDndTemplate: function(that, display = 'block') {
        const children = this.renderChildren(that);

        return React.createElement(
          "div",
          {
            "id":        that.props.node.type,
            "name":      that.props.node.component,
            "className": that.props.node.className[that.state.dnd]
          },
          children
        );
      },

Однако, если я добавлю еще несколько вызовов createElement в тот же метод, это вызовет полный жизненный цикл дочерних элементов и запускает их getInitialState и другие вызовы, которые я не хочу выполнять:

      regionDndTemplate: function(that, display = 'block') {
        const children = this.renderChildren(that);

        return React.createElement(
          "div",
          {
            "id":        that.props.node.type,
            "name":      that.props.node.component,
            "className": that.props.node.className[that.state.dnd]
          },
          React.createElement(
            "div",
            {
              "key": 100,
              "style": { "height": "45px", "lineHeight": "42px" }
            },
            "Hello"
          ),
          children
        );
      },

Я попытался изменить порядок дочерних и других элементов, чтобы дочерние элементы является первым, и это не имеет никакого эффекта.

Я в замешательстве, почему добавление большего количества элементов на уровне родительского компонента окажет какое-либо влияние на жизненный цикл детей?

...