React Native (View) onLayout не выполняет функции - PullRequest
0 голосов
/ 29 декабря 2018

Я пытался получить некоторые значения из реквизита onLayout в компоненте View.

Это представление, которое возвращается в функции рендеринга:

<View onLayout={this.onLayout}>
    <Text>Hello</Text>
</View>

Тогда это функция onLayout, которая находится в том же классе

onLayout = () => {
  console.log("hello")
}

КонсольЖурнал никогда не делается.Но если я позвоню console.log("hello") изнутри реквизита onLayout, он отобразится в консоли.

<View onLayout={console.log("Hello")}>
    <Text>Hello</Text>
</View>

Это привело меня в замешательство в течение последних 4 часов.Я перепробовал все, что мог найти здесь на stackoverflow и GitHub.

Я просто что-то делаю очень неправильно?

1 Ответ

0 голосов
/ 30 декабря 2018
onLayout(event) {
    const {x, y, height, width} = event.nativeEvent.layout;
    const newHeight = this.state.view2LayoutProps.height + 1;
    const newLayout = {
        height: newHeight ,
        width: width,
        left: x,
        top: y,
      };

    this.setState({ view2LayoutProps: newLayout });
  }

  render() {
    return (
      <View style={styles.container}>
        <View style={styles.View1}>
          <Text>{this.state.view2LayoutProps.height}</Text>
        </View>
        <View onLayout={(event) => this.onLayout(event)} 
              style={[styles.View2, this.state.view2LayoutProps]} />
        <View style={styles.View3} />
      </View>
    );
  }

}
...