• A-Fu Design
  • 前端設計
    • jQuery 套件
    • HTML 5
  • 關於A-Fu
  • 隱私權政策
  • 聯絡A-Fu
Google+ facebook twitter

A-Fu Design

A-Fu Design

Facebook Open Source React Native



更多資源

如果您只是閱讀本網站,您應該能夠構建一個非常酷的React Native應用程序。但React Native不僅僅是一家公司生產的產品 - 它是一個由數千名開發人員組成的社區。因此,如果您對React Native感興趣,可以查看以下相關內容

熱門的資源

如果您使用的是React Native,您可能已經了解React。所以我覺得有點傻提這個。但如果你還沒有,請查看React - 這是構建現代網站的最佳方式。

一個常見問題是如何處理React Native應用程序的“狀態”。最受歡迎的庫是Redux。不要害怕Redux使用“reducer”這個詞的頻率 - 它是一個非常簡單的庫,還有一系列精彩的視頻解釋它。


如果您正在尋找能夠執行特定操作的庫,請查看Awesome React Native,這是一個包含演示,文章和其他內容的精選組件列表。

範例

試試Showcase中的應用程序,看看React Native的功能! GitHub上還有一些示例應用程序。您可以在模擬器或設備上運行應用程序,您可以看到這些應用程序的源代碼,這很簡潔。

為Facebook的F8會議構建應用程序的人員也開源代碼並編寫了一系列詳細的教程。如果您想要一個比大多數示例應用程序更加真實的更深入的示例,這將非常有用。

擴展 React Native

  • 開發人員編寫並將React Native模塊發佈到npm,並在GitHub上開源。
  • 製作模塊有助於發展React Native生態系統和社區。我們建議為您的用例編寫模塊並在npm上共享它們。
  • 如果您對擴展本機功能感興趣,請閱讀Native Modules(iOS,Android)和Native UI Components(iOS,Android)上的指南。
  • 尋找預建組件?檢查 JS.coach。

開發工具

Nuclide 是Facebook內部用於JavaScript開發的IDE。 Nuclide的殺手級功能是它的調試能力。它還具有出色的內聯流支持。 VS Code是另一個受JavaScript開發人員歡迎的IDE。
Ignite 是一個使用Redux和一些不同的通用UI庫的入門工具包。它有一個CLI來生成應用程序,組件和容器。如果您喜歡所有個人技術選擇,Ignite可能是您的最佳選擇。
CodePush是Microsoft提供的一項服務,可以輕鬆地將實時更新部署到React Native應用程序。如果您不喜歡通過應用商店流程來部署一些小調整,並且您也不喜歡設置自己的後端,請嘗試使用CodePush。
Expo 是一個開發環境和應用程序,專注於讓您在Expo開發環境中構建React Native應用程序,而無需觸及Xcode或Android Studio。如果您希望React Native更加JavaScripty和webby,請查看Expo。
React Developer Tools非常適合調試React和React Native應用程序。

React Native 的開發者都在哪?!

discuss.reactjs.org上的論壇是討論最佳實踐和應用程序架構以及React Native未來的好地方。

Reactiflux是一個Discord聊天,其中發生了許多與React相關的討論,包括React Native。 Discord就像Slack一樣,除了它對於擁有眾多貢獻者的開源項目更有效。查看#react-native通道。

React Twitter帳戶涵蓋了React和React Native。關注React Native Twitter帳戶和博客,了解React Native世界中發生的事情。

世界各地都有很多React Native Meetup。通常在React meetup中也有React Native內容。

有時我們有React會議。我們發布了來自React.js Conf 2017,React.js Conf 2016和React.js Conf 2015的視頻。我們未來可能還會舉辦更多會議。敬請關注。您還可以在此處找到專門的React Native會議列表。




Share
Tweet
Pin
Share
No 意見
Facebook Open Source React Native




網路

許多移動應用需要從遠程URL加載資源。您可能希望向REST API發出POST請求,或者您可能只需要從另一台服務器獲取一大塊靜態內容。

使用 Fetch


React Native為您的網絡需求提供了Fetch API。如果您之前使用過XMLHttpRequest或其他網絡API,那麼Fetch似乎很熟悉。有關其他信息,請參閱MDN的使用提取指南。

發出請求

要從任意URL獲取內容,只需將URL傳遞給fetch:
fetch('https://mywebsite.com/mydata.json');
Fetch還採用可選的第二個參數,允許您自定義HTTP請求。您可能需要指定其他標頭,或發出POST請求:
fetch('https://mywebsite.com/endpoint/', {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    firstParam: 'yourValue',
    secondParam: 'yourOtherValue',
  }),
});
查看獲取請求文檔以獲取完整的屬性列表。

處理響應

以上示例顯示瞭如何發出請求。在許多情況下,您會想要對響應做些什麼。

網絡是一種固有的異步操作。 Fetch方法將返回一個Promise,使得編寫以異步方式工作的代碼變得非常簡單:
function getMoviesFromApiAsync() {
  return fetch('https://facebook.github.io/react-native/movies.json')
    .then((response) => response.json())
    .then((responseJson) => {
      return responseJson.movies;
    })
    .catch((error) => {
      console.error(error);
    });
}
您還可以在React Native應用程序中使用建議的ES2017 async / await語法:
async function getMoviesFromApi() {
  try {
    let response = await fetch(
      'https://facebook.github.io/react-native/movies.json'
    );
    let responseJson = await response.json();
    return responseJson.movies;
  } catch (error) {
    console.error(error);
  }
}
不要忘記捕獲fetch可能引發的任何錯誤,否則它們將被靜默刪除。

默認情況下,iOS將阻止任何未使用SSL加密的請求。如果需要從明文URL(以http開頭的URL)獲取,則首先需要添加App Transport Security異常。如果您提前知道您需要訪問哪些域,則為這些域添加例外更安全;如果直到運行時才知道域,則可以完全禁用ATS。但請注意,自2017年1月起,Apple的App Store審核將需要合理的理由來禁用ATS。有關更多信息,請參閱Apple的文檔。

使用其他網絡庫

XMLHttpRequest API內置於React Native。這意味著您可以使用第三方庫,例如依賴它的 frisbee 或 axios,或者如果您願意,可以直接使用XMLHttpRequest API。
var request = new XMLHttpRequest();
request.onreadystatechange = (e) => {
  if (request.readyState !== 4) {
    return;
  }

  if (request.status === 200) {
    console.log('success', request.responseText);
  } else {
    console.warn('error');
  }
};

request.open('GET', 'https://mywebsite.com/endpoint/');
request.send();
XMLHttpRequest的安全模型與Web上的安全模型不同,因為本機應用程序中沒有CORS的概念。

支援 WebSocket

React Native還支持WebSockets,這是一種通過單個TCP連接提供全雙工通信通道的協議。
var ws = new WebSocket('ws://host.com/path');

ws.onopen = () => {
  // connection opened
  ws.send('something'); // send a message
};

ws.onmessage = (e) => {
  // a message was received
  console.log(e.data);
};

ws.onerror = (e) => {
  // an error occurred
  console.log(e.message);
};

ws.onclose = (e) => {
  // connection closed
  console.log(e.code, e.reason);
};

舉手擊掌!

如果你通過線性閱讀教程來到這裡,那麼你就是一個令人印象深刻的人類。恭喜。接下來,您可能希望查看社區使用React Native執行的所有酷炫功能。



Share
Tweet
Pin
Share
No 意見
Facebook Open Source React Native


使用列表視圖

React Native提供了一套用於顯示數據列表的組件。通常,您需要使用FlatList或SectionList。

FlatList組件顯示一個滾動列表,其中包含更改但結構相似的數據。 FlatList適用於長數據列表,其中項目數可能會隨時間而變化。與更通用的ScrollView不同,FlatList僅呈現當前在屏幕上顯示的元素,而不是一次呈現所有元素。

FlatList組件需要兩個道具:data和renderItem。 data是列表的信息來源。 renderItem從源中獲取一個項目並返回要呈現的格式化組件。

此示例創建一個簡單的硬編碼數據FlatList。數據道具中的每個項目都呈現為Text組件。然後,FlatListBasics組件呈現FlatList和所有Text組件。



如果你想將一組數據分解為邏輯部分,可能使用部分標題,類似於iOS上的UITableViews,那麼可以使用SectionList。


列表視圖最常見的用途之一是顯示從服務器獲取的數據。為此,您需要了解React Native中的網絡。







Share
Tweet
Pin
Share
No 意見
Facebook Open Source React Native



使用ScrollView

ScrollView 是一個通用的滾動容器,可以託管多個組件和視圖。可滾動項目不一定是均勻的,您可以垂直和水平滾動(通過設置水平屬性)。

此範例創建一個垂直 ScrollView,其中圖像和文本混合在一起。
可以將ScrollViews配置為允許使用swingEnabled props使用滑動手勢來分頁瀏覽視圖。在視圖之間水平滑動也可以使用ViewPagerAndroid組件在Android上實現。

具有單個項目的ScrollView可用於允許用戶縮放內容。設置maximumZoomScale和minimumZoomScale道具,您的用戶將能夠使用捏合和擴展手勢來放大和縮小。

ScrollView最適合呈現有限大小的少量內容。即使ScrollView當前未顯示在屏幕上,也會呈現ScrollView的所有元素和視圖。如果你有一個很長的列表,可以在屏幕上顯示更多的項目,你應該使用FlatList。那麼讓我們接下來了解列表視圖。




Share
Tweet
Pin
Share
No 意見

Facebook Open Source React Native

處理觸碰




用戶主要通過觸摸與移動應用交互。他們可以使用手勢的組合,例如點按按鈕,滾動列表或縮放地圖。 React Native提供了處理各種常見手勢的組件,以及一個全面的手勢響應系統,可以進行更高級的手勢識別,但您最有可能感興趣的一個組件是基本按鈕。

顯示基本按鈕

Button 提供了一個基本的按鈕組件,可以在所有平台上很好地呈現。顯示按鈕的最小示例如下所示:

<Button
  onPress={() => {
    Alert.alert('You tapped the button!');
  }}
  title="Press Me"
/>

這將在iOS上呈現藍色標籤,在Android上呈現帶有白色文本的藍色圓角矩形。按下按鈕將調用“onPress”功能,在這種情況下會顯示一個警告彈出窗口。如果您願意,可以指定“顏色”道具來更改按鈕的顏色。


使用下面的示例繼續使用 Button 組件。您可以通過單擊右下角的切換選擇預覽應用的平台,然後點擊“點擊播放”以預覽應用。



Touchables

如果基本按鈕看起來不適合您的應用,您可以使用React Native提供的任何“可觸摸”組件構建您自己的按鈕。 “可觸摸”組件提供捕獲輕敲手勢的能力,並且可以在識別手勢時顯示反饋。但是,這些組件不提供任何默認樣式,因此您需要做一些工作才能讓它們在您的應用中看起來很漂亮。

您使用哪種“可觸摸”組件取決於您想要提供的反饋類型:

  • 通常,您可以在任何可以使用Web上的按鈕或鏈接的地方使用TouchableHighlight。當用戶按下按鈕時,視圖的背景將變暗。
  • 您可以考慮在Android上使用TouchableNativeFeedback來顯示響應用戶觸摸的墨水錶面反應漣漪。
  • TouchableOpacity可用於通過降低按鈕的不透明度來提供反饋,從而允許在用戶按下時看到背景。
  • 如果您需要處理點擊手勢但不希望顯示任何反饋,請使用TouchableWithoutFeedback。
在某些情況下,您可能希望檢測用戶何時按下並保持視圖一段時間。可以通過將函數傳遞給任何“可觸摸”組件的onLongPress道具來處理這些長按。

讓我們看看所有這些行動:

滾動列表,滑動頁面和縮放縮放

移動應用程序中常用的另一種手勢是滑動或平移。該手勢允許用戶滾動項目列表,或者瀏覽內容頁面。為了處理這些和其他手勢,我們將學習如何使用ScrollView。




Share
Tweet
Pin
Share
No 意見
Older Posts

About me

還在努力掙扎中的工程師

Follow Us

  • Google+
  • facebook
  • twitter

Categories

Accordion Animation AutoComplete CSS Calendar Canvas Carousel Charts Color DatePicker Effects Facebook API Forms Gallery HTML5 Menu Mootools Prototype React images jQuery javascripts lightbox 前端技術 統計圖表 網頁設計

Recent Posts

  • Security Eye 4.4.1 免費網路攝影機監視系統,多路監視器解決方案
  • PotPlayer 1.7.16291 繁體中文免安裝,新增串流媒體播放的 MP4 格式
  • 微軟推出 Font Maker 製作自己專屬 「手寫字型」
  • jQuery Gantt Chart 在網頁上繪製甘特圖的 jQuery 套件
  • Kalendae 一個不依賴任何框架的日期選擇器

Sponsor


勸敗攻略
勸敗分部

Facebook

Blog Archive

  • 10月 2026 (2)
  • 9月 2026 (9)
  • 8月 2026 (7)
  • 6月 2026 (27)
  • 5月 2026 (60)
  • 4月 2026 (58)
  • 3月 2026 (62)
  • 2月 2026 (55)
  • 1月 2026 (62)
  • 12月 2025 (62)
  • 11月 2025 (58)
  • 10月 2025 (62)
  • 9月 2025 (60)
  • 8月 2025 (62)
  • 7月 2025 (62)
  • 6月 2025 (58)
  • 4月 2025 (48)
  • 3月 2025 (60)
  • 2月 2025 (51)
  • 1月 2025 (56)
  • 12月 2024 (61)
  • 11月 2024 (60)
  • 10月 2024 (54)
  • 9月 2024 (55)
  • 8月 2024 (42)
  • 7月 2024 (40)
  • 6月 2024 (19)
  • 9月 2023 (3)
  • 4月 2023 (2)
  • 2月 2023 (1)
  • 12月 2021 (1)
  • 1月 2019 (11)
  • 12月 2018 (31)
  • 11月 2018 (31)
  • 10月 2018 (31)
  • 9月 2018 (30)
  • 8月 2018 (31)
  • 7月 2018 (3)
  • 2月 2018 (1)
  • 4月 2015 (1)
  • 9月 2014 (1)
  • 2月 2014 (1)
  • 7月 2013 (1)
  • 2月 2013 (2)
  • 1月 2013 (1)
  • 12月 2012 (12)
  • 11月 2012 (81)
  • 10月 2012 (64)

Created with by ThemeXpose | Distributed by Blogger Templates