我刚刚开始使用react,我有点迷路了。我试图使登录页面,并使http post请求。现在我只是想让任何类型的HTTP请求工作,所以我使用请求bin,我在一个npm包(https://www.npmjs.com/package/redux-react-fetch):
)的文档中找到了这个基本动作。export function updateTicket(ticketId, type, value){
return {
type: 'updateArticle',
url: `http://requestb.in/1l9aqbo1`,
body: {
article_id: ticketId,
title: 'New Title'
},
then: 'updateTicketFinished'
}
}
那么,写完一个动作之后,我该怎么做呢?如何让我的应用调用并使用那个动作?npm包的文档提到了一些关于在我的商店中设置状态的东西,这是我需要首先设置的东西吗?
您可以尝试以下任何一种方法。我用过fetch
和axios
,它们工作得非常好。还没有尝试superagent
。
- 对于请求,您可以使用
fetch
与fetch-polyfill兼容所有浏览器(link) - Axios图书馆。(链接)
- 有承诺的超级代理。(链接)
如果你使用fetch,你需要使用polyfill,因为IE和safari还不支持它。但对于polyfill,它的效果很好。您可以查看如何使用它们的链接。
所以你要做的是在你的动作创建器中你可以使用上面的任何一个来调用API
获取
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
});
这是API调用,现在进入状态。在redux中有一个状态来处理你的应用程序。我建议你应该通过redux基础知识,你可以在这里找到。因此,一旦你的api调用成功,你需要用数据更新你的状态。
获取数据的操作
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}
}
}
更新状态的动作
function receiveData(data) {
return{
type: 'RECEIVE_DATA',
data
}
}
减速器
function app(state = {},action) {
switch(action.types){
case 'RECEIVE_DATA':
Object.assign({},...state,{
action.data
}
})
default:
return state
}
}