我刚开始反应,我有点迷失。我正在尝试创建登录页面并发出http发布请求。现在我只是想让任何类型的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包的文档提到了在我的商店中设置状态的东西,我需要先设置一些东西吗?
答案 0 :(得分:34)
您可以尝试以下任何一项。我已经使用了fetch
和axios
两种方法,效果非常好。然而,试试superagent
。
fetch
fetch-polyfill兼容所有浏览器(link)如果使用fetch,则需要使用polyfill,因为IE和safari尚不支持。但是使用polyfill它可以很好地工作。您可以查看链接,了解如何使用它们。
所以你要做的就是在你的动作创建者中,你可以使用上述任何一种方法调用API。
<强> FETCH 强>
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基础知识,你可以找到here。因此,一旦您的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
}
}