为了账号安全,请及时绑定邮箱和手机立即绑定

redux中fetch的使用

redux中fetch的使用

繁星coding 2019-04-09 17:19:46
看到一个项目中引入的是 import fetch from 'isomorphic-fetch';然后在定义action—type时,写的:export const FETCH_RUNS = 'FETCH_RUNS';export const FETCH_RUNS_PENDING = 'FETCH_RUNS_PENDING';export const FETCH_RUNS_FULFILLED = 'FETCH_RUNS_FULFILLED';export const FETCH_RUNS_REJECTED = 'FETCH_RUNS_REJECTED';加了三种状态pending,fulfilled,rejectedaction中只写了type: FETCH_RUNS的:import {fetchRuns} from '../../services/RunService';const fetchRunsAction = (req) => ({  type: FETCH_RUNS,  payload: fetchRuns(req)});export {  fetchRunsAction as fetchRuns}而在reducer中对三种状态的action都做了处理:import {  FETCH_RUNS_FULFILLED,  FETCH_RUNS_PENDING,  FETCH_RUNS_REJECTED} from '../actions/runActions';// INITIALIZE STATEconst initialState = {  runs: null,  fetched: false,  fetching: false,  failed: false};// REDUCERexport const FetchRunsReducer = (state = initialState, action) => {  switch (action.type) {    case FETCH_RUNS_PENDING:      return {        ...state,        fetching: true,        fetched: false,        failed: false      };    case FETCH_RUNS_FULFILLED:      return {        ...state,        runs: action.payload,        fetching: false,        fetched: true,        failed: false      };    case FETCH_RUNS_REJECTED:      return {        ...state,        runs: null,        fetching: false,        fetched: false,        failed: true      };    default:      return state;  }};在组件中:...const mapStateToProps = state => {  const {fetched, fetching, runs} = state.runs;  return {    fetched,    fetching,    runs  };};const mapDispatchToProps = dispatch => {  return bindActionCreators({fetchRuns}, dispatch);};现在我的疑惑点在——什么时候触发了FETCH_RUNS_PENDING,FETCH_RUNS_FULFILLED,FETCH_RUNS_REJECTED这三个状态;在promise是有三个状态,自动触发,但是程序如何跳到代码中写的这三个action名字FETCH_RUNS_PENDING,FETCH_RUNS_FULFILLED,FETCH_RUNS_REJECTED;我想是不是某个封装的地方给action名字自动后面添加了PENDING、FULFILLED,REJECTED然后在触发此action的时候后自动触发这几个状态的action。那么请问在哪个里面进行了封装呢?代码中没有找到啊,是不是react,redux某个里面封装的?求助
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

你少最重要的一部分,就是处理 action 那部分
现在我的疑惑点在——什么时候触发了FETCH_RUNS_PENDING,FETCH_RUNS_FULFILLED,FETCH_RUNS_REJECTED这三个状态;在promise是有三个状态,自动触发,
手动触发或者自己写个工具触发总之不会自动触发,

但是程序如何跳到代码中写的这三个action名字
你在找着代码 看最终 action 被那个组件使用了

FETCH_RUNS_PENDING,FETCH_RUNS_FULFILLED,FETCH_RUNS_REJECTED;我想是不是某个封装的地方给action名字自动后面添加了PENDING、FULFILLED,REJECTED然后在触发此action的时候后自动触发这几个状态的action。那么请问在哪个里面进行了封装呢?代码中没有找到啊,是不是react,redux某个里面封装的?求助

可以这样做 但是很明显这个不是这样做的


查看完整回答
反对 回复 2019-05-19
  • 1 回答
  • 0 关注
  • 783 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信