как создать ссылку для функционального компонента - PullRequest
0 голосов
/ 07 мая 2020

Как я могу создать родительскую ссылку для двух компонентов функции getAllNumbers ()?

<View>{this.getAllNumbers()}</View>
<View>{this.getAllNumbers()}</View>


getAllNumbers() {
    let itemArr = [];

    for (let i = 0; i < numberArray.length; i++) {
      itemArr.push(
        <NumberView
          ref={"NumberView" + numberArray[i]}
          key={`rowA${i}`}
        />
      );
    }

    return itemArr;
}

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете использовать функциональный обратный вызов для создания ссылок для компонента NumberView

constructor() {
   super()
   this.numberViewRefs = {};
}
...

getAllNumbers() {
    var itemArr = [];

    for (let i = 0; i < numberArray.length; i++) {
      itemArr.push(
        <NumberView
          ref={(ref) => this.numberViewRefs[i] = ref}
          key={`rowA${i}`}
        />
      );
    }

    return itemArr;
}

Когда вы используете sh для доступа к ним, вы можете получить к ним доступ из объекта numberViewRef с помощью индекса.

Например: this.numberViewRef[i]

Так как вы вызываете getAllNumbers дважды, вам нужно добавить префикс ref ключом. Может быть,

<View>{this.getAllNumbers("first")}</View>
<View>{this.getAllNumbers("second")}</View>

, а затем

getAllNumbers(key) {
    var itemArr = [];

    for (let i = 0; i < numberArray.length; i++) {
      itemArr.push(
        <NumberView
          ref={(ref) => this.numberViewRefs[`${key}${i}`] = ref}
          key={`rowA${i}`}
        />
      );
    }

    return itemArr;
}

и сначала укажите его как

this.numberViewRefs[ $ {key} $ {i} ] или this.numberViewRefs[ {i} ]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...