ant-design使用笔记之数据流向

因为最近在写ant-design其中数据流向老是记不住,所以记个笔记,因为我比较菜,有错误的地方欢迎大佬们指出。

@connect(({rule, loading}) => ({
    rule,//对应的namespace
    loading: loading.models.rule,
}))
export default class demo extends React.Component {
    constructor(props) {
        super(props);
    }
   ....一堆代码 
   }

通过connect修饰之后的类就可以通过this.props获取里面的值了。

这个时候我们可以获取dispatch对象了

const { dispatch } = this.props;

然后dispatch使用方法如下

dispatch({
  type: 'rule/fetch',
  params: {url: fullUrl},
});

参数type的格式是model文件对应的namespace 然后是对应的方法名。

params是我们请求的参数。

接下来看model文件的东西

export default {
    namespace: 'rule',
    state: {
       //在这里面写state
    },
    effects: {
        *fetch({params, callback}, {call, put}) {
            const response = yield call(getPage, params);
            yield put({
                type: 'save',
                params: response,
            });
            if (callback) callback();
        },


    },


    reducers: {
        save(state, action) {
            return {
                ...state,
                data: action.params.data,
            };
        },
    },
};


根据dispatch的参数我们找到对应的namespace:rule

*fetch:是一个异步函数,async fetch 的简写。接下来里面两个参数

params就是我们上面dispatch的第二个参数,call是用于调用request对应的方法的。put是将结果,传到下面的reducers里。

我们说下这几个参数怎么用

在看params怎么用之前我们看下getPage是怎么写的

import {request} from 'umi';
import {stringify} from 'qs';
export async function getPage(params) {
    return request(`http://localhost:6200/?${stringify(params)}`)
}

得知params是getPage的参数,然后使用request做了一个请求。外面我们获取到了response。

然后回到effects,put是把结果推送到reducers,参数type要求和reducers的函数名一致。

接下来是reducers,然后是它的两个参数state和action。state就是我们全局的state,我们在return的时候会重新加载state,

通过action.params可以获取response,然后可以进一步获取其其他属性,比如又进行了一步获取获取数据其data属性。

这个地方要重点提示一下:请求的时候一定要注意跨域的问题,ant-desin有解决的跨域的方法不说了,或者我们可以修改服务端。如果使用flask作为服务端,可以这样

from flask_cors import *
from lxml import etree


app = Flask(__name__)
CORS(app, supports_credentials=True)

然后这个时候页面就会重新render

    render() {
        const source = this.props.rule.data;
        return (
				//一堆组件信息
			)
}

我们在代码里就可以通过props获取rule里的reducers产生的data了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值