gpt4 book ai didi

reactjs - 如何在 React Native 的另一个组件中使用 ref ?

转载 作者:行者123 更新时间:2023-12-02 20:02:14 25 4
gpt4 key购买 nike

我在我的应用程序中使用了 React Native mpaboxgl。

import MapboxGL from "@mapbox/react-native-mapbox-gl";


<MapboxGL.MapView
logoEnabled={false}
attributionEnabled={false}
ref={(e) => { this.oMap = e }}
zoomLevel={6}
centerCoordinate={[54.0, 24.0]}>
<MapboxGL.MapView>

如何在另一个组件中使用oMap?所以我可以做一些事情,比如从其他组件/页面上打开/关闭图层。

最佳答案

更新:

使用有效的全局变量。

ref={ref=>{
global.input=ref;
}}

现在您可以在此屏幕之后的应用程序中的任何位置使用 global.input.focus()


以下是实现此目的的示例:https://snack.expo.io/ryJk3hFKN

您可以创建一个返回该组件的 ref 的函数。
并将该函数作为其他组件中的 props 传递

import * as React from 'react';
import { Text, View, StyleSheet, TextInput, TouchableOpacity } from 'react-native';

export default class App extends React.Component {
getInputRef = () => this.input;

render() {
return (
<View style={styles.container}>
<TextInput
ref={ref => {
this.input = ref;
}}
placeholder="Hi there"
/>
<SecondComp getInputRef={this.getInputRef} />
</View>
);
}
}

class SecondComp extends React.Component {
render() {
return (
<TouchableOpacity
onPress={() => {
this.props.getInputRef().focus();
}}>
<Text>click to Focus TextInput from the other component</Text>
</TouchableOpacity>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'space-around',
backgroundColor: '#ecf0f1',
padding: 8,
},
});

关于reactjs - 如何在 React Native 的另一个组件中使用 ref ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55586171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com