在元素列表中未定义对元素的React Native ref

时间:2019-05-10 09:05:35

标签: javascript reactjs react-native ecmascript-6

我正在尝试在呈现平面列表的同时获取对元素的引用,但是该引用返回为未定义。 请参阅下面的相关代码:

构造函数:

constructor(props) {
    super(props);

    this.modalRef = createRef();
}

RenderItem:

_renderItem = ({ item }, context) => {
    const modalRef = context.modalRef.current; // Why is context.modalRef.current null?
    let onPress = () => alert("Something went wrong...");

    return (
        <View style={styles.item}>
            <ListItemCard
                id={item.id}
                value="Some value.."
                onPress={onPress()}
            />
        </View>
    );
};

具有“渲染”功能:

屏幕上的模式:

    <Modal
    ref={this.modalRef}
    text="Some text.."
    onPressClose={() =>
        this.modalRef.current.close()
    }
/>

平面列表:

  <FlatList
    data={data}
    renderItem={item => this._renderItem(item, this)}
    keyExtractor={(item, index) => index.toString()}
/>

1 个答案:

答案 0 :(得分:1)

modalRef.currentnull,因为引用是在Modal组件的安装位置上分配的。我假设在调用_renderItems函数时未安装该组件。

我建议您在不呈现组件的函数(例如事件处理程序)中使用ref。此处ref变量应具有对该组件的引用。