不知道为什么页面调用数据没有问题,但是执行后封包发现页面一直在不断循环渲染页面,疯狂调用服务端请求 问题截图
源代码
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
};
},
}
};