在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 使用dvajs,在無(wú)狀態(tài)組件中dispatch一個(gè)effects會(huì)不停的發(fā)送請(qǐng)求

使用dvajs,在無(wú)狀態(tài)組件中dispatch一個(gè)effects會(huì)不停的發(fā)送請(qǐng)求?

在model文件中

import { articleDetail } from '../../service/api';
export default {
  namespace: 'article',

  state: {
    detail: null
  },
  
  reducers: {
    saveDetail(state, { payload }) {
      return {
        ...state,
        detail: payload
      };
    }
  },

  effects: {
    *articleDetail({ payload: threadId }, { call, put }) {
      const res = yield call(articleDetail, threadId);
      if (res.code === 200) {
        yield put({
          type: 'saveDetail',
          payload: res.data
        });
      }
    },
  }
}

在組件中

import React from 'react';
import { connect } from 'dva';

function ArticleDetail({ match, dispatch }) {

  dispatch({
    type: 'article/articleDetail',
    payload: match.params.id
  });

  return (
    <div>detail/{match.params.id}</div>
  );
}

export default connect(({ article }) => ({ article }))(ArticleDetail);

在無(wú)狀態(tài)組件中怎么正確獲取請(qǐng)求啊

回答
編輯回答
放開(kāi)她

你不能在stateless中直接dispatch一個(gè)effect.

import React from 'react';
import { connect } from 'dva';

function ArticleDetail({ match, dispatch }) {

  //dispatch({
  //  type: 'article/articleDetail',
  //  payload: match.params.id
  //});

  return (
    <div>detail/{match.params.id}</div>
  );
}

export default connect(({ article }) => ({ article }))(ArticleDetail);

注釋掉的部分不能那么寫(xiě)。
如果想在頁(yè)面第一次進(jìn)入加載,請(qǐng)寫(xiě)在subscriptions中,或者寫(xiě)在componentDidMount()方法中

2017年8月19日 05:07
編輯回答
風(fēng)畔

你在articleDetail中調(diào)用articleDetail了把?

effects: {
    *articleDetail({ payload: threadId }, { call, put }) {
      // 調(diào)用articleDetail
      const res = yield call(articleDetail, threadId);
      if (res.code === 200) {
        yield put({
          type: 'saveDetail',
          payload: res.data
        });
      }
    },
  }
2017年7月26日 13:23