tôi giải quyết điều này bằng cách sử dụng onLayout
prop, nó rất dễ dàng:
Ví dụ:
Bước 1: Tôi tạo ra một chỗ dựa trong tiểu bang của chúng tôi sẽ tổ chức chiều cao hiện tại của hình ảnh được gọi làcurImgHeight
.
constructor(){
super(props);
this.state={curImgHeight:0}
}
Bước 2: Sử dụng prop trong bất kỳ View
hoặc Element
có hỗ trợ onLayout
prop.
Ở đây tôi sử dụng nó với Image
. Sau đó, tất cả những gì chúng ta phải làm là thay đổi thuộc tính trạng thái đó bất cứ khi nào chiều cao hình ảnh thực tế cao hơn chiều cao tối thiểu của chúng ta.
render(){
<Image
source={{uri: "https://placehold.it/350x150"}}
resizeMode='cover'
style={[styles.image, {height:(this.state.curImgHeight<=0?null:this.state.curImgHeight)}]}
onLayout={(e)=>{
let {height} = e.nativeEvent.layout;
let minimumImgHeight = 400; //We set the minimum height we want here.
if(height<= minimumImgHeight){ //Whenever the real height of the image is less than the minimum height
this.setState({curImgHeight:minimumImgHeight}); //just change the curImgHeight state property to the minimum height.
}
}}
/>
}
Đó là cách tôi giải quyết nó cho tôi.
p.s: Trong khi tìm kiếm, tôi nhận thấy rằng hỗ trợ không chính thức phản ứng tự nhiên minHeight
và maxHeight
nhưng chỉ dành cho iOS chứ không phải cho Android. Tôi sẽ không dám sử dụng chúng mặc dù. Đoạn mã trên hoạt động tốt và cho phép tôi kiểm soát.
Trường hợp sử dụng của bạn cho chiều rộng tối thiểu và chiều cao tối thiểu là bao nhiêu?Có lẽ bạn có thể thiết lập chiều rộng/chiều cao tự động, đảm bảo nó không bao giờ nhỏ hơn mức tối thiểu mục tiêu –
Tôi muốn đặt chiều rộng tối thiểu cho nút, tôi muốn một nút có độ rộng tối thiểu ngay cả văn bản của nó rất ngắn –