最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用 Rails API 構(gòu)建一個 React 應(yīng)用程序的詳細(xì)步驟

 更新時間:2021年08月09日 09:27:35   作者:Gustave  
這篇文章主要介紹了使用 Rails API 構(gòu)建一個 React 應(yīng)用程序的詳細(xì)步驟,主要包括后端:Rails API部分,前端:React部分及React組件的相關(guān)操作,具有內(nèi)容詳情跟隨小編一起看看吧

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

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

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

后端:Rails API部分

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

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

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

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

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

然后,運行 `bundle install`

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

輸出結(jié)果將是這樣顯示:

Created database 'app_name_development'
Created database 'app_name_test'

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

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

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

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

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開始。如果你打開該文件,你將發(fā)現(xiàn)由控制器自動生成的路由。因為我們將為API定義自己的路由,所以我們將刪除它們來定義新的路由/ API:

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

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

前端:React部分

現(xiàn)在我們有了一個基本的API,讓我們使用它來設(shè)置前端React應(yīng)用程序:

npx create_react-app 

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

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

npx create-react-app my_react 

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

React組件

React的主要優(yōu)點之一是組件的概念,所以我們像下圖一樣創(chuàng)建我們所需的組件,刪除不需要的組件。

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

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

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

這就是我們的組件。接著將它導(dǎo)入到我們的應(yīng)用程序文件中,以便將它顯示到瀏覽器中。

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

使用 axios 獲取 API 數(shù)據(jù)

是時候從后端加載數(shù)據(jù)了??梢允褂萌魏伟鼇慝@取/存儲數(shù)據(jù)。這次我們使用 axios。

安裝 axios 并在 Movie 組件中導(dǎo)入。

npm install axios --save 

首先在構(gòu)造函數(shù)中將狀態(tài)初始化為一個空數(shù)組:

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

由于我們已經(jīng)在組件中初始化了狀態(tài),現(xiàn)在讓我們實現(xiàn) componentDidMount()方法來從 API 加載我們的數(shù)據(jù):

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' 

記住導(dǎo)入axios:

import axios from 'axios' 

到這里你會因會被cors屏蔽而無法獲得你的數(shù)據(jù)。為了避免這種情況,你必須在config/appcation.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 

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

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

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> 
); 
} 

現(xiàn)在我們可以在瀏覽器中看到我們的數(shù)據(jù)了。

到此這篇關(guān)于使用 Rails API 構(gòu)建一個 React 應(yīng)用程序的文章就介紹到這了,更多相關(guān)Rails API 構(gòu)建React 應(yīng)用程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Ref在React中的交叉用法

    詳解Ref在React中的交叉用法

    眾所周知,react推出了hooks之后,很多項目就開始往hooks上靠攏,所以也就出現(xiàn)了class和hooks交叉使用的項目。這個時候使用ref需要注意一些東西
    2021-06-06
  • ForwardRef?useImperativeHandle方法demo

    ForwardRef?useImperativeHandle方法demo

    這篇文章主要為大家介紹了ForwardRef?useImperativeHandle方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • React中用@符號編寫文件路徑實現(xiàn)方法介紹

    React中用@符號編寫文件路徑實現(xiàn)方法介紹

    在Vue中,我們導(dǎo)入文件時,文件路徑中可以使用@符號指代src目錄,極大的簡化了我們對路徑的書寫。但是react中,要想實現(xiàn)這種方式書寫文件路徑,需要寫配置文件來實現(xiàn)
    2022-09-09
  • react 下拉框內(nèi)容回顯的實現(xiàn)思路

    react 下拉框內(nèi)容回顯的實現(xiàn)思路

    這篇文章主要介紹了react 下拉框內(nèi)容回顯,實現(xiàn)思路是通過將下拉框選項的value和label一起存儲到state中, 初始化表單數(shù)據(jù)時將faqType對應(yīng)的label查找出來并設(shè)置到Form.Item中,最后修改useEffect,需要的朋友可以參考下
    2024-05-05
  • React競態(tài)條件Race Condition實例詳解

    React競態(tài)條件Race Condition實例詳解

    這篇文章主要為大家介紹了React競態(tài)條件Race Condition實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 對react中間件的理解

    對react中間件的理解

    這篇文章主要介紹了對react中間件的理解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • React路由跳轉(zhuǎn)的實現(xiàn)示例

    React路由跳轉(zhuǎn)的實現(xiàn)示例

    在React中,可以使用多種方法進行路由跳轉(zhuǎn),本文主要介紹了React路由跳轉(zhuǎn)的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • ReactNative短信驗證碼倒計時控件的實現(xiàn)代碼

    ReactNative短信驗證碼倒計時控件的實現(xiàn)代碼

    本篇文章主要介紹了ReactNative短信驗證碼倒計時控件的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • react中的ajax封裝實例詳解

    react中的ajax封裝實例詳解

    這篇文章主要介紹了react中的ajax封裝實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 在React項目中添加吸頂效果的代碼示例

    在React項目中添加吸頂效果的代碼示例

    在大型Web應(yīng)用中,一個常見的設(shè)計需求是讓某些組件具有吸頂效果,這意味著當(dāng)頁面向下滾動時,該組件會保持在屏幕頂部,在本文中,我們將介紹如何在React項目中實現(xiàn)吸頂效果。我們將首先討論使用原生JavaScript領(lǐng)域的方法來實現(xiàn),然后將這些方法與React結(jié)合起來
    2023-06-06

最新評論

泰和县| 晋中市| 南城县| 安陆市| 资溪县| 黑龙江省| 六安市| 宽城| 略阳县| 石柱| 读书| 且末县| 永胜县| 红原县| 绥棱县| 合川市| 平利县| 海淀区| 彰化县| 靖远县| 泗阳县| 福海县| 阿瓦提县| 准格尔旗| 灵璧县| 凤冈县| 扶余县| 分宜县| 临湘市| 邛崃市| 江华| 临漳县| 迁安市| 康平县| 城固县| 娄底市| 荣昌县| 定安县| 绵阳市| 万州区| 瓦房店市|