从同级传递ref

时间:2019-03-09 16:12:42

标签: javascript reactjs react-native

我正在使用库react-native-dropdownaler,并且在ref中为其创建App时,而不是在每个屏幕中添加组件时,我只想简单地传递其{{1} }到我的ref上,以后再使用。 将其Router传递给同胞的问题是-它们都一起渲染,所以当我传递ref时,其静止的ref

undefined

3 个答案:

答案 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>
    );
  }

}