ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## action.js文件为业务逻辑 ## 1、关于方法函数: 1、涉及到调用接口异步调用,统一采用async await写法(async漏写会报错); 2、函数嵌套传值写法参照ES6箭头函数的嵌套,代码示例: ~~~jsx deploy = (info, index) => () => { this.component.props.setPortalContent && this.component.props.setPortalContent('配置值管理', 'open-portal-config-value-list', {info}) } ~~~ 3、涉及到action中更新state有sf和sfs两种写法,很显然能看出来sfs是复数形式表示可以改变多个的值,两种写法 代码示例: ~~~jsx add = () => { let confEnvs = this.metaAction.gf('data.confEnvs') confEnvs = confEnvs.push(fromJS({})) this.metaAction.sf('data.confEnvs', confEnvs) } ~~~ ~~~kotlin pageChanged = (current, pageSize) => { this.metaAction.sfs({ 'data.page.currentPage': current || this.metaAction.gf('data.page.currentPage'), 'data.page.pageSize': pageSize || this.metaAction.gf('data.page.pageSize'), }) } ~~~ 如果需要改变多个data值可以一次性写好data对象然后使用sf,也可以分别在sfs中用键值对分别写入。 注:尽量不要混合使用或者使用多个sf在同一个方法里,会影响性能,因为每次改变state都会render dom元素。 ## 2、action.js中element元素的写法: ~~~jsx renderEnvInfo = (info, index, type) => { return <Input value={info} onChange={this.handleChange(index, type)} /> } ~~~ 如上图所示区别于data.js的json串写法。可参考ant.design的示例代码。 注:所用到元素除div、span等基本元素,其他组件均需要在文件开头引入(对应上图input的引入示例: ~~~jsx import { Input } from 'edf-component' ~~~