tại sao Văn bản chiếm toàn bộ không gian của Chế độ xem, thay vì chỉ là không gian cho "Xin chào"?
Bởi vì View
là một thùng chứa flex và theo mặc định có flexDirection: 'column'
và alignItems: 'stretch'
, điều đó có nghĩa là các phần tử con của nó phải được kéo dài ra để lấp đầy chiều rộng của nó.
(Lưu ý, theo các tài liệu , tất cả các thành phần trong React Native đều display: 'flex'
mặc định và display: 'inline'
hoàn toàn không tồn tại. Theo cách này, hành vi mặc định của a Text
trong a View
React Native khác với hành vi mặc định của span
bên trong div
web; trong trường hợp sau, khoảng thời gian sẽ không lấp đầy chiều rộng của div
bởi vì a span
là phần tử nội tuyến theo mặc định. Không có khái niệm nào như vậy trong React Native.)
Làm thế nào để Văn bản có thể được thả nổi / căn chỉnh sang phải?
Các float
bất động sản không tồn tại trong Phản ứng Native, nhưng có tải các tùy chọn có sẵn cho bạn (với hành vi hơi khác nhau) mà sẽ cho phép bạn phải sắp xếp văn bản của bạn. Đây là những cái tôi có thể nghĩ ra:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(Cách tiếp cận này không thay đổi thực tế là Text
lấp đầy toàn bộ chiều rộng của View
nó; nó chỉ đúng căn chỉnh văn bản trong Text
.)
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
Điều này thu nhỏ Text
phần tử theo kích thước cần thiết để giữ nội dung của nó và đặt nó ở cuối hướng chéo (hướng ngang, theo mặc định) của View
.
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
Điều này tương đương với việc thiết lập alignSelf: 'flex-end'
cho tất cả View
trẻ em.
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'
đặt hướng chính của bố cục là ngang thay vì dọc; justifyContent
cũng giống như alignItems
, nhưng điều khiển căn chỉnh theo hướng chính thay vì hướng chéo.
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
Cách tiếp cận này được thể hiện, trong ngữ cảnh của web và CSS thực, tại https://stackoverflow.com/a/34063808/1709587 .
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
Giống như trong CSS thực, điều này sẽ Text
"hết dòng", nghĩa là anh chị em của nó sẽ có thể chồng lên nó và vị trí thẳng đứng của nó sẽ ở trên cùng View
theo mặc định (mặc dù bạn có thể đặt khoảng cách rõ ràng từ đỉnh của View
sử dụng top
tài sản phong cách).
Đương nhiên, phương pháp nào bạn muốn sử dụng - và liệu sự lựa chọn giữa chúng có quan trọng hay không - sẽ phụ thuộc vào hoàn cảnh chính xác của bạn.
justifyContent
,alignItems
,alignSelf
. Tôi tự hỏi cái nào đúng