Một chút muộn cho bữa tiệc, nhưng đây là một câu trả lời toàn diện hơn với các ví dụ:
Phản ứng
React là một thư viện UI dựa trên thành phần sử dụng "DOM bóng" để cập nhật hiệu quả DOM với những gì đã thay đổi thay vì xây dựng lại toàn bộ cây DOM cho mỗi thay đổi. Ban đầu nó được xây dựng cho các ứng dụng web, nhưng bây giờ cũng có thể được sử dụng cho thiết bị di động & 3D / vr.
Các thành phần giữa React và React Native không thể được hoán đổi cho nhau vì React Native ánh xạ tới các thành phần UI di động gốc nhưng logic kinh doanh và mã không liên quan đến kết xuất có thể được sử dụng lại.
ReactDOM
Ban đầu được bao gồm với thư viện React nhưng đã bị tách ra sau khi React đang được sử dụng cho các nền tảng khác ngoài web. Nó đóng vai trò là điểm vào DOM và được sử dụng kết hợp với React.
Thí dụ:
import React from 'react';
import ReactDOM from 'react-dom';
class App extends Component {
state = {
data: [],
}
componentDidMount() {
const data = API.getData(); // fetch some data
this.setState({ data })
}
clearData = () => {
this.setState({
data: [],
});
}
render() {
return (
<div>
{this.state.data.map((data) => (
<p key={data.id}>{data.label}</p>
))}
<button onClick={this.clearData}>
Clear list
</button>
</div>
);
}
}
ReactDOM.render(App, document.getElementById('app'));
Phản ứng bản địa
React Native là một khung di động đa nền tảng sử dụng React và giao tiếp giữa Javascript và đối tác gốc của nó thông qua một "cây cầu". Do đó, rất nhiều cấu trúc UI phải khác khi sử dụng React Native. Ví dụ: khi xây dựng danh sách, bạn sẽ gặp phải các vấn đề hiệu suất lớn nếu bạn cố gắng sử dụng map
để xây dựng danh sách thay vì React NativeFlatList
. React Native có thể được sử dụng để xây dựng các ứng dụng di động iOS / Android, cũng như cho đồng hồ thông minh và TV.
Hội chợ triển lãm
Hội chợ triển lãm là hướng đi khi bắt đầu một ứng dụng React Native mới.
Expo là một khuôn khổ và một nền tảng cho các ứng dụng React phổ quát. Đó là một bộ công cụ và dịch vụ được xây dựng xung quanh React Native và các nền tảng bản địa giúp bạn phát triển, xây dựng, triển khai và lặp lại nhanh chóng trên các ứng dụng web, Android và web
Ghi chú: Khi sử dụng hội chợ triển lãm, bạn chỉ có thể sử dụng Bản gốc mà họ cung cấp. Tất cả các thư viện bổ sung mà bạn bao gồm sẽ cần phải là javascript thuần túy hoặc bạn sẽ cần phải đẩy expo.
Ví dụ tương tự khi sử dụng React Native:
import React, { Component } from 'react';
import { Flatlist, View, Text, StyleSheet } from 'react-native';
export default class App extends Component {
state = {
data: [],
}
componentDidMount() {
const data = API.getData(); // fetch some data
this.setState({ data })
}
clearData = () => {
this.setState({
data: [],
});
}
render() {
return (
<View style={styles.container}>
<FlatList
data={this.state.data}
renderItem={({ item }) => <Text key={item.id}>{item.label}</Text>}
/>
<Button title="Clear list" onPress={this.clearData}></Button>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
Sự khác biệt:
- Lưu ý rằng mọi thứ bên ngoài kết xuất có thể giữ nguyên, đây là lý do tại sao mã logic nghiệp vụ / vòng đời có thể được sử dụng lại trên React và React Native
- Trong React Native, tất cả các thành phần cần phải được nhập từ thư viện UI gốc hoặc thư viện UI khác
- Sử dụng một số API nhất định mà ánh xạ tới các thành phần gốc thường sẽ hiệu quả hơn là cố gắng xử lý mọi thứ ở phía javascript. Ví dụ. các thành phần ánh xạ để xây dựng một danh sách so với sử dụng danh sách phẳng
- Sự khác biệt tinh tế: những thứ như
onClick
biến thànhonPress
, React Native sử dụng biểu định kiểu để xác định kiểu theo cách hiệu quả hơn và React Native sử dụng flexbox làm cấu trúc bố cục mặc định để giữ mọi thứ phản hồi.
- Vì không có "DOM" truyền thống trong React Native, nên chỉ có các thư viện javascript thuần túy có thể được sử dụng trên cả React và React Native
React360
Điều đáng nói là React cũng có thể được sử dụng để phát triển ứng dụng 3D / VR. Cấu trúc thành phần rất giống với React Native. https://facebook.github.io/react-360/