Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
435 views
in Technique[技术] by (71.8m points)

antd 页面一直循环调用服务端请求的问题

不知道为什么页面调用数据没有问题,但是执行后封包发现页面一直在不断循环渲染页面,疯狂调用服务端请求 问题截图

image
image

源代码

import {?PageContainer?} from '@ant-design/pro-layout';

import React,?{?PureComponent?} from 'react';

import {?Space,?Card,?Radio,?Table?} from 'antd';

import styles from './index.less';

import {?connect?} from 'umi';

const columns?=?[

 {

 title: "编号",

 dataIndex: "cover",

 key: "cover",

 render:?text => <img width="50" src={text}></img>

 },

 {

 title: "视频描述",

 dataIndex: "title",

 key: "title",

 render:?text => <a>{text}</a>

 },

 {

 title: "播放量",

 dataIndex: "play_count",

 key: "play_count"

 },

 {

 title: "点赞",

 dataIndex: "digg_count",

 key: "digg_count"

 },

 {

 title: "评论",

 dataIndex: "comment_count",

 key: "comment_count"

 },

 {

 title: "发布时间",

 dataIndex: "create_time",

 key: "create_time"

 },

 {

 title: "状态",

 dataIndex: "video_status",

 key: "video_status"

 },

 //?{

 //???title:?"点赞",

 //???key:?"tags",

 //???dataIndex:?"tags",

 //???render:?tags?=>?(

 //?????<span>

 //???????{tags.map(tag?=>?{

 //?????????let?color?=?tag.length?>?5???"geekblue"?:?"green";

 //?????????if?(tag?===?"loser")?{

 //???????????color?=?"volcano";

 //?????????}

 //?????????return?(

 //???????????<Tag?color={color}?key={tag}>

 //?????????????{tag.toUpperCase()}

 //???????????</Tag>

 //?????????);

 //???????})}

 //?????</span>

 //???)

 //?},

 {

 title: "操作",

 key: "action",

 //?render:?(text,?record)?=>?(

 //???<span>

 //?????<a?style={{?marginRight:?16?}}>查看?</a>

 //?????<a>删除</a>

 //???</span>

 //?)

 }

];

class PageOpenVideoList extends PureComponent?{

 //?连接models层

 componentDidMount()?{

 const {?dispatch,?account_list?}?= this.props;

 dispatch({

 type: 'models_open/get_account_list',

 payload:?{},

 });

 }

 state?=?{

 user_id: ''

 };

 onChange?=?(e) => {

 console.log('radio?checked',?e.target.value);

 this.setState({

 user_id:?e.target.value,

 });

 const {?dispatch?}?= this.props;

 dispatch({

 type: 'models_open/get_list_video',

 payload:?{

 'id':?e.target.value,

 'cursor': 0,

 'rowcount': 20,

 },

 });

 };

 render()?{

 const {

 account_list,

 list_video,

 }?= this.props;

 const data?=?[];

 Array.from(account_list).forEach(function (element)?{

 data.push({

 value:?element.ID,

 label:?element.NickName,

 });

 });

 return (

 <PageContainer className={styles.main}>

 <Space direction="vertical">

 <Card title="选择查询账号" hoverable="true">

 <div className={styles.container}>

 <div id="components-radio-demo-radiobutton-solid">

 <div>

 <div>

 <Radio.Group buttonStyle="solid" options={data}

 onChange={this.onChange}

 optionType="button"

 >

 </Radio.Group>

 </div>

 </div>

 </div>

 </div>

 </Card>

 <Card title="视频列表" hoverable="true">

 <div className={styles.container}>

 <div id="components-table-demo-basic">

 <Table columns={columns} dataSource={list_video} />

 </div>

 </div>

 </Card>

 </Space>

 </PageContainer>

 );

 }

}

export default connect(({?models_open?}) => ({

 account_list:?models_open.account_list,

 list_video:?Object.values(models_open.list_video),

}))(PageOpenVideoList);
import {?list_account,?delete_account,?oauth,?list_video,refresh?} from "@/services/services_open";

export default {

 namespace: "models_open",

 state:?{

 data:?[],

 model_back_data:?String,

 account_list:?[],

 list_video:?[],

 back_message:String,

 },

 effects:?{

 /**

 * @param payload 参数

 * @param call 执行异步函数调用接口

 * @param put 发出一个?Action,类似于?dispatch?将服务端返回的数据传递给上面的state

 * @returns {IterableIterator<*>}

 */

 *list_account({?payload?},?{?call,?put?})?{

 const response?= yield call(list_account,?payload);

 yield put({

 //?这行对应下面的reducers处理函数名字

 type: "save",

 payload:?response

 });

 },

 *delete_account({?payload?},?{?call,?put?})?{

 const response?= yield call(delete_account,?payload);

 yield put({

 //?这行对应下面的reducers处理函数名字

 type: "del",

 payload:?response

 });

 },

 *oauth({?payload?},?{?call,?put?})?{

 const response?= yield call(oauth,?payload);

 yield put({

 //?这行对应下面的reducers处理函数名字

 type: "oauth_save",

 payload:?response

 });

 },

 *refresh({?payload?},?{?call,?put?})?{

 const response?= yield call(refresh,?payload);

 yield put({

 //?这行对应下面的reducers处理函数名字

 type: "refresh",

 payload:?response

 });

 },

 *get_account_list({?payload?},?{?call,?put?})?{

 const response?= yield call(list_account,?payload);

 yield put({

 //?这行对应下面的reducers处理函数名字

 type: "get_account_list",

 payload:?response

 });

 },

 *get_list_video({?payload?},?{?call,?put?})?{

 const response?= yield call(list_video,?payload);

 yield put({

 //?这行对应下面的reducers处理函数名字

 type: "get_list_video",

 payload:?response

 });

 },

 },

 reducers:?{

 /**

 *

 * @param state

 * @param action

 * @returns {{[p:?string]:?*}}

 */

 save(state,?action)?{

 return {

 ...state,

 data:?action.payload

 };

 },

 del(state,?action)?{

 return {

 ...state,

 data:?action.payload

 };

 },

 refresh(state,?action)?{

 return {

 ...state,

 back_message:?action.payload

 };

 },

 oauth_save(state,?action)?{

 return {

 ...state,

 model_back_data:?action.payload

 };

 },

 get_account_list(state,?action)?{

 return {

 ...state,

 account_list:?action.payload

 };

 },

 get_list_video(state,?action)?{

 return {

 ...state,

 list_video:?action.payload

 };

 },

 }

};

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...