成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Rails API 構建一個 React 應用程序

譯文
開發 開發工具
設置和構建一個以React作為前端的Rails API來處理動態數據無法保存的問題。

【51CTO.com快譯】使用React創建項目時,動態數據無法保存的問題要怎么辦呢?為此,我開始尋找一個充當備份的API來解決這一問題。

?[[411288]]?

在本文中,我將介紹如何設置和構建一個以React作為前端的Rails API的一些要點,以幫助那些和我遇到一樣問題的人。

本文計劃使用Rails API作為后端,React作為前端,所以需要學習本文的人遵循同樣的路徑和步驟。

后端:Rails API部分

作為創建Rails API之前的先決條件,建議使用Postgres配置數據庫,因為它比SQLite更容易部署。然后在你的目錄中找到并創建一個新項目,輸入以下命令: 

rails new <app_name> --api --database=postgresql
cd` `<app_name>

--database標志是為了選擇我們的數據庫引擎,這里我們使用Postgresql,而--api是為了創建一個基于Rails的API來使用我們需要的東西并跳過我們不會使用的額外配置。

使用編輯器打開項目。然后打開Gemfile并添加rack-cors: 

gem 'rack-cors', :require => 'rack/cors'

然后,運行 `bundle install`

在運行新的Rails應用程序之前,必須先將其連接到數據庫。接下來這一步,將把新創建的Rails應用程序連接到PostgreSQL數據庫,這樣就可以在需要時存儲和獲取配方數據。這步需要輸入:`rails db:create`

輸出結果將是這樣顯示: 

Created database 'app_name_development'
Created database 'app_name_test'

打開終端并運行以下命令來創建控制器和模型: 

rails generate model Movie name rating:integer
rails generate controller Movies index create update destroy
rails db:migrate

接下來實現控制器中的空方法來讓API正常工作:

??

現在有了一個管理模型的控制器,接著將把一些電影復制seed.rb文件中,以在瀏覽器中顯示它們,測試是否可以將數據轉換成json格式。復制以下電影: 

Movie.create(name: "Titanic", rating: 5)
Movie.create(name: "We were soldiers", rating: 4)
Movie.create(name: "L’amour quand elle nous tient", rating: 5)
Movie.create(name: "Nobody's Fool", rating: 2)

之后,將這四個元素粘貼到項目中運行:rails db:seed

接下來可以開始編寫代碼了。首先從route.rb開始。如果你打開該文件,你將發現由控制器自動生成的路由。因為我們將為API定義自己的路由,所以我們將刪除它們來定義新的路由/ API: 

Rails.application.routes.draw do
resources :movies
end

要查看你的應用程序,需要打開瀏覽器窗口并導航到http://localhost:3000。您將看到Rails默認的歡迎頁面。但是添加路由后,這意味著http://localhost:3000/movies將獲得我們在數據庫中的所有電影。也可以在瀏覽器上安裝任何 JSON 查看器擴展以查看格式化數據。 

前端:React部分

現在我們有了一個基本的API,讓我們使用它來設置前端React應用程序:

npx create_react-app

Create React App 是 Facebook 的一個項目,可幫助您無需任何配置即可快速開始使用 React 應用程序。

首先,確保你安裝了Node.js和npm。然后,確保你在Rails目錄之外,并運行以下命令來創建react app: 

npx create-react-app my_react

這將創建一個與我們的API通信的React應用程序。在目錄中輸入cd my_react并運行npm start后,將在http://localhost:3000上打開它。

React組件

React的主要優點之一是組件的概念,所以我們像下圖一樣創建我們所需的組件,刪除不需要的組件。

??

在源目錄中,我們將創建一個新的文件夾**組件**,并在其中放置要顯示的文件。

讓我們創建我們的第一個組件。讓我們在 todo- app/src/components/Movie.js 中創建一個新文件: 

import React, { Component } from 'react';
class Song extends Component {
render() {
return (
<div>
<h1>movies</h1>
</div>
);
}
}
export default Song;

這就是我們的組件。接著將它導入到我們的應用程序文件中,以便將它顯示到瀏覽器中。 

import './App.css';
import Song from './components/Song';
function App() {
return (
<div className="App">
<Song />
</div>
);
}
export default App;

使用 axios 獲取 API 數據

是時候從后端加載數據了。可以使用任何包來獲取/存儲數據。這次我們使用 axios。

安裝 axios 并在 Movie 組件中導入。 

npm install axios --save

首先在構造函數中將狀態初始化為一個空數組: 

constructor(props) {
super(props)
this.state = {
movies: []
}
}

由于我們已經在組件中初始化了狀態,現在讓我們實現 componentDidMount()方法來從 API 加載我們的數據: 

componentDidMount() {
axios.get('http://localhost:3000/movies')
.then(response => {
console.log(response)
this.setState({movies: response.data})
})
.catch(error => console.log(error))
}

import axios from 'axios'

記住導入axios: 

import axios from 'axios'

到這里你會因會被cors屏蔽而無法獲得你的數據。為了避免這種情況,你必須在config/aplication.rb中使用API: 

config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'http://localhost:3000' resource '*', :headers => :any, :methods => [:get, :post, :put, :delete, :options]
end
end

現在我們知道我們可以從 API 中獲取想法,讓我們在 React 組件中使用它們。我們可以更改渲染函數以從狀態迭代列表想法并顯示它們中的每一個:

現在我們知道我們能夠從API中獲取思想,讓我們在React組件中使用它們。我們可以改變render函數來遍歷來自狀態的列表想法,并顯示它們中的每一個:

render() {
return (
<div>

{this.state.movies.map((movie) => {

return(

<div className="tile" key={movie.id} >

<h2>{movie.name}:<span>{movie.rating}</span></h2>

</div>
)
})}
</div>
);
}

現在我們可以在瀏覽器中看到我們的數據了。 

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】


責任編輯:黃顯東 來源: hackernoon.com
相關推薦

2023-09-21 08:00:00

ChatGPT編程工具

2018-11-14 19:00:24

PythonRedis共享單車

2022-10-08 00:53:12

HTTP物聯網應用程序

2022-07-11 10:01:23

Vue 3前端

2011-05-11 10:58:39

iOS

2010-07-12 10:11:27

ibmdwWeb

2021-02-17 11:05:34

PythonPyQt代碼

2010-01-08 12:14:44

ibmdwAndroid

2024-06-07 08:25:16

2010-06-13 09:22:37

jQuery

2019-05-27 13:50:35

多云架構企業多云集成云計算

2020-10-14 15:05:02

React應用程序

2023-05-19 08:49:58

SQLAlchemy數據庫

2010-08-13 13:05:30

Flex應用程序

2011-06-09 09:31:40

Qt 實例

2009-09-22 12:59:07

ibmdwWeb

2013-01-11 14:45:43

iOS開發移動應用iPhone

2009-01-03 14:25:10

ibmdwWeb

2011-03-14 14:47:50

2011-03-14 15:14:10

AzureFacebook營銷式應用程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本a级大片 | 中文在线日韩 | 久久久久久久久蜜桃 | 国产色网 | 国产欧美日韩精品一区二区三区 | 精品一区二区三区在线观看国产 | 久久精品国产免费一区二区三区 | 日韩网站在线观看 | 精品久久久久久久久久久久 | 精品国产三级 | www.亚洲精品 | 国产精品永久久久久 | 免费看国产片在线观看 | 免费一区二区三区 | 97精品国产一区二区三区 | 国产精品福利在线观看 | 国产精品美女久久久久久久久久久 | 二区在线视频 | 国产精品久久久久久久久婷婷 | 亚洲精品一区在线观看 | 视频一区二区在线观看 | 无码日韩精品一区二区免费 | 日韩一区二区久久 | 欧美中文字幕一区二区 | 国产欧美日韩在线 | 正在播放国产精品 | 91av精品| 国产免费自拍 | 一级毛片大全免费播放 | 97超碰站 | 91久久综合亚洲鲁鲁五月天 | 精品久久久久久久 | 久久久久国产精品午夜一区 | 精品区一区二区 | 日韩免费一区 | 色伊人久久 | 国产成人精品综合 | 日本在线视频一区二区 | 最新中文字幕第一页视频 | 91在线精品视频 | 日本精品一区二区三区视频 |