如何为功能组件创建引用

时间:2020-05-07 12:11:38

标签: reactjs react-native

如何为两个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 :(得分:0)

您可以利用函数回调为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;
}

当您希望访问它们时,可以使用索引从numberViewRef对象访问它们。

例如:this.numberViewRef[i]

由于您两次调用了getAllNumbers,因此需要在引用前面加一个键。也许

<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} ]