2016-09-30 19 views
10

Sadece tepkiyle çalışmaya başladım ve biraz kaydım. Bir giriş sayfası oluşturmaya ve bir http post isteği yapmaya çalışıyorum. Şu anda sadece HTTP istek çalışma her türlü almaya çalışıyorum, bu yüzden istek bin kullanıyorum ve bir npm paket için docs bu temel eylemi (https://www.npmjs.com/package/redux-react-fetch) bulundu: sonra YaniTepki-redux'ta bir HTTP isteğini nasıl yapabilirim?

export function updateTicket(ticketId, type, value){ 
    return { 
    type: 'updateArticle', 
    url: `http://requestb.in/1l9aqbo1`, 
    body: { 
     article_id: ticketId, 
     title: 'New Title' 
    }, 
    then: 'updateTicketFinished' 
    } 
} 

bir eylem yazma, ne yapmalıyım? Uygulamamı bu işlemi çağırmak ve kullanmak için gerçekten nasıl alabilirim? Npm paketindeki dokümanlar, mağazamda bir eyalet belirlemeyle ilgili bir şeyden bahsetmiş, ilk önce kurmam gereken bir şey mi?

+0

devleti

function receiveData(data) { return{ type: 'RECEIVE_DATA', data } } 

Reducer güncelleme veri

function fetchData(){ return(dispatch,getState) =>{ //using redux-thunk here... do check it out const url = '//you url' fetch(url) .then (response) => {dispatch(receiveData(response.data)} //data being your api response object/array .catch(error) => {//throw error} } } 

Eylem getirmesi ama seni öneriyoruz Redux hakkında egghead'deki ücretsiz videoları izleyin. İçerik oluşturucudan, http aramalarının nasıl yapılacağı da dahil olmak için ihtiyacınız olan her şeyi öğreneceksiniz. Bunu yapmak için başka bir soyutlamaya ihtiyacınız yoktur. Https://egghead.io/courses/building-react-applications-with- idiomatic-redux –

+1

[Here] (http://redux.js.org/docs/advanced/AsyncActions.html), yapmaya çalıştığınız şeyin belgeleridir. Temelde iki şey yapmalısın.Öncelikle, ajax isteğini (örneğin, istediğiniz her şeyi kullanarak, 'get veya jQuery'yi kullanarak) başlatın. Bu büyük olasılıkla eylemin kendisi içinde gerçekleşecektir. Yapmanız gereken bir sonraki şey, ajax araması tamamlandığında depoyu ajax çağrısından gelen bilgilerle güncellemektir. Bunu yapmak için mağazanın 'gönderim 'işlevine erişmeniz gerekir. AsyncActionCreators 'bölümündeki bölüm, bunu nasıl yapacağınızı göstermelidir. – mrmcgreg

+0

Sadece 'reare-redux' ile işlerin nasıl yapıldığını anlayana kadar kütüphaneden uzak durmak isterim. – mrmcgreg

cevap

22

Aşağıdakilerden birini deneyebilirsiniz. Hem fetch hem de axios'u kullandım, harika çalışıyorlar. Yine de superagent'u denemek için.

  1. talepler yapmak için, tüm tarayıcılarda (link)
  2. Axios kütüphane arasındaki uyumluluk için getir-Polyfill ile fetch kullanabilir. vaatlerle (link)
  3. superagent. (link)

bunu henüz IE ve Safari desteklenmez beri polyfill kullanmanız gerekir getirme kullanın. Ama polyfill ile oldukça iyi çalışıyor. Bunları nasıl kullanabileceğinizi görmek için bağlantılara göz atabilirsiniz.

Yapacağınız şey, eylem oluşturucunuzda, yukarıdakilerden herhangi birini kullanarak bir API'yi çağırabilirsiniz.

function fetchData(){ 
    const url = '//you url' 
    fetch(url) 
    .then (response) => {//next actions} 
    .catch(error) => {//throw error} 
} 

AXIOS

axios.get('//url') 
    .then(function (response) { 
    //dispatch action 
    }) 
    .catch(function (error) { 
    // throw error 
    }); 

Yani şimdi devlete geliyor, API çağrısı içindi GETİR. Redux'da uygulamanızı yöneten bir durum var. here'u bulabileceğiniz redux temellerinden geçmenizi öneririm. Böylece, api çağrınız başarılı olduğunda, verilerinizi verilerle güncellemeniz gerekir.

Eylem Sana söz kitaplığı kullanılmaz ettik

function app(state = {},action) { 
     switch(action.types){ 
      case 'RECEIVE_DATA': 
       Object.assign({},...state,{ 
        action.data 
        } 
        }) 
      default: 
      return state 
     } 
    } 
+1

Parlak özeti. Teşekkürler Harkirat –

+0

Teşekkür ederim. Şu anda Axios ile axios.post kullanarak bir POST isteği yapmaya çalışıyorum, ancak bunun yerine bir istek isteği göndermeye devam ediyor. Yayının çalışması için bir eylem oluşturmam gerekiyor mu? bkz: http://stackoverflow.com/questions/39797940/react-axios-is-sending-a-get-request-instead-of-a-post – jmona789

+0

Tahmin sorunu çözüldü mü? –

İlgili konular