Reactjs ReactNative:自定义组件上的ref和onLayout

Reactjs ReactNative:自定义组件上的ref和onLayout,reactjs,react-native,Reactjs,React Native,我有一个自定义组件,如下所示。有趣的是,ref没有被设置,而onLayout也没有被触发。如果我将MyView包装在Parent类中的另一个View中,这些问题就会得到解决 既不是参考也不是仅布置工作 const MyView = props => <View style={{flex: 1}}> {this.props.children} </View> constmyview=props=> {this.props.c

我有一个自定义组件,如下所示。有趣的是,
ref
没有被设置,而
onLayout
也没有被触发。如果我将
MyView
包装在
Parent
类中的另一个
View
中,这些问题就会得到解决

既不是参考也不是仅布置工作

const MyView = props => 
      <View style={{flex: 1}}>
        {this.props.children}
      </View>
constmyview=props=>
{this.props.children}
Ref在这里工作

class MyView extends Component {
  render() {
    return (
      <View style={{flex: 1}}>
        {this.props.children}
      </View>
    )
  }
}
class Parent extends Component {
  render() {
    return (
      <MyView ref={c => this.myView = c} onLayout={e => console.log(e)} />
    )
  }
}
类MyView扩展组件{
render(){
返回(
{this.props.children}
)
}
}
示例用法

class MyView extends Component {
  render() {
    return (
      <View style={{flex: 1}}>
        {this.props.children}
      </View>
    )
  }
}
class Parent extends Component {
  render() {
    return (
      <MyView ref={c => this.myView = c} onLayout={e => console.log(e)} />
    )
  }
}
类父级扩展组件{
render(){
返回(
this.myView=c}onLayout={e=>console.log(e)}/>
)
}
}

ref
只能在组件上工作,这就是为什么它在第一个场景中不工作的原因


onLayout
是一种查看
的方法,不会被每个
组件继承。传入
道具
并将其设置在包含
视图
可以解决此问题。

在另一个视图中包装时,是否确实有效?我不会像那样使用ref,但是有一个特定的名称,但是如果可能的话,您不应该使用它。你到底想完成什么?我已经用更多的细节更新了这个问题。