Về cơ bản nếu bạn muốn đặt kích thước và làm cho nó thay đổi thì hãy đặt nó thành trạng thái trên bố cục như thế này:
import React, { Component } from 'react';
import { AppRegistry, StyleSheet, View } from 'react-native';
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'yellow',
},
View1: {
flex: 2,
margin: 10,
backgroundColor: 'red',
elevation: 1,
},
View2: {
position: 'absolute',
backgroundColor: 'orange',
zIndex: 3,
elevation: 3,
},
View3: {
flex: 3,
backgroundColor: 'green',
elevation: 2,
},
Text: {
fontSize: 25,
margin: 20,
color: 'white',
},
});
class Example extends Component {
constructor(props) {
super(props);
this.state = {
view2LayoutProps: {
left: 0,
top: 0,
width: 50,
height: 50,
}
};
}
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>
);
}
}
AppRegistry.registerComponent(Example);
Bạn có thể tạo thêm nhiều biến thể về cách cần sửa đổi, bằng cách sử dụng phần này trong một thành phần khác có chế độ xem khác làm trình bao bọc và tạo một cuộc gọi lại onResponderRelease, có thể chuyển vị trí sự kiện chạm vào trạng thái, sau đó có thể được chuyển đến thành phần con là tài sản, có thể ghi đè lên trạng thái cập nhật trên trang, bằng cách đặt {[styles.View2, this.state.view2LayoutProps, this.props.touchEventTopLeft]}
và cứ thế.