我正在使用库react-native-dropdownaler,并且在ref
中为其创建App
时,而不是在每个屏幕中添加组件时,我只想简单地传递其{{1} }到我的ref
上,以后再使用。
将其Router
传递给同胞的问题是-它们都一起渲染,所以当我传递ref
时,其静止的ref
undefined
答案 0 :(得分:1)
您可以使用createRef
API创建一个ref
。不过,current
属性将直到第一个渲染之后才设置。
class App extends React.Component {
alertRef = React.createRef();
render() {
return (
<View style={styles.container}>
<StatusBar />
<Router alertRef={this.alertRef} />
<DropdownAlert ref={this.alertRef} />
</View>
);
}
}
答案 1 :(得分:1)
我将传递组件本身,并镜像该组件中的方法:
render() {
return (
<View style={styles.container}>
<StatusBar />
<Router alertRef={this}/>
<DropdownAlert ref={ref => (this.alertRef = ref)} />
</View>
);
}
alertWithType(type, title, message) {
this.alertRef.alertWithType(type, title, message);
}
答案 2 :(得分:0)
我最终得到的解决方案是:
class App extends Component {
constructor(props)
super(props)
this.state = {alertRef:null}
componentDidMount() {
this.setState({alertRef:this.alertRef})
}
render() {
return (
<View style={styles.container}>
<StatusBar />
{this.state.alertRef && (
<Router
alertRef={this.state.alertRef}
language={this.props.language}
/>
)}
<DropdownAlert ref={ref => (this.alertRef = ref)} />
</View>
);
}
}