温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何通过props获取rule里的reducers产生的data

发布时间:2022-01-04 17:06:04 来源:亿速云 阅读:88 作者:柒染 栏目:大数据

如何通过props获取rule里的reducers产生的data,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。


因为最近在写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了。

看完上述内容,你们掌握如何通过props获取rule里的reducers产生的data的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI