Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

concent 文档修改建议 #30

Closed
liuxingpluck opened this issue Jul 16, 2020 · 4 comments
Closed

concent 文档修改建议 #30

liuxingpluck opened this issue Jul 16, 2020 · 4 comments

Comments

@liuxingpluck
Copy link

因为 我们的系统 ,是有很多 tab控件的,每个tab控件在点击生成的时候,会去生成一个界面,常规上来说,这个界面 是 固定基于某种模块生成界面的,
但有些 是特殊 tab界面,是动态 请求一个 react 控件 所属的js,该 界面 可能得模块是 :dynamic

那么 在 最开始 run的时候,这个 dynamic 模块 是还没有注册的,因为这种 dynamic 模块还是挺多的,估计有二十多个,要是 每个都写好在 store里,就太繁琐啦

所以 希望最好 提供一个 多次调用 run 的api 功能

@liuxingpluck
Copy link
Author

liuxingpluck commented Jul 16, 2020

哦哦 不好意思,刚刚仔细 看了下你的官方文档:
https://concentjs.github.io/concent-doc/api/g-configure

有个 configure 函数,应该是能实现 这种功能的,那我 再提个建议咯,你看下修改:

https://concentjs.github.io/concent-doc/api/g-reducer
这个文档中的 reducer 函数,只说明 具体调用时 提供的参数,并没有 说明 主动调用时 参数的类型
比如:上一个 issue 你给我说的 : payload,{renderKey}

另外 像 : ccOption 这种 props 里面的参数,我搜索 api文档 也没看到

希望你有空 能补全下,我准备 开始 推广 公司里的小组使用了,这样他们看的时候,不会太糊涂

@liuxingpluck liuxingpluck changed the title concent run 函数 只能执行一次,有没有其他的方式,在运行时动态 注册store呢? concent 文档修改建议 Jul 16, 2020
@fantasticsoul
Copy link
Contributor

fantasticsoul commented Jul 16, 2020

非常感谢你的建议,文档的确还有很多很多需要改进的确地方,因为是个人维护,最近处于答辩关键时期,所以文档这一块的建设工作就比较慢了,欢迎你或者你的小伙伴加入concent qq群:647642619,有时候issue里反馈比较慢的话直接群里提问也可以,群里会有其他热心用户帮忙解答。

关于ccReducer的使用建议是在脱开实例的地方才使用,然后维护一个有类型的ccReducer暴露出来给全局用,这样非常方便ide补全方法调用(而非直接使用原始的 cc.reducer,这个只适合在console里直接调用):
参加js实例:https://codesandbox.io/s/concent-guide-xvcej?file=/src/components/biz-smart/Menu.js
ts实例:https://codesandbox.io/s/concent-guide-ts-zrxd5?file=/src/components/biz-smart/Menu.tsx

注: ccReducer 维护在 src/base/ccReducer下了

renderKey这些提示其实是因为你还未标注类型所以ide感知不到,例如
https://codesandbox.io/s/concent-guide-xvcej?file=/src/pages/FnVsClass/BetterFnDemo.js:1669-1672
这个文件的50那里,你刻意解开既可以便可查看renderKey等参数说明

强烈建议多看看示例工程的代码组织方式,通过 types/store集中维护好所有模块的类型,然后在整个项目的任意地方都可以使用这些类型了。

文档这方面肯定会努力完善,欢迎你或者其他小伙伴多多关注concent并点颗小星星,这是作为开源作者能收到的最大精神鼓励,也是持续维护和更新下去的动力。

最后我准备升级下版本,renderKey的注入方式可通过id来标识,当实例上有id属性时,则当前组件的renderKey就设置为id的值,这样可以让用户省去构造ccOption的麻烦,因为绝大多数场景实例的id通常就是唯一标识符号。

改进前:

<Cell key={id} ccOption={{renderKey:id}} id={id}/>

改进后:

<Cell key={id}  id={id}/>

// 组件的setup里取到的renderKey的值就是id

function setup(ctx){
   const { renderKey, props, ccUniqueKey } = ctx;
   // 如果设置了props里设置了id
   renderKey === props.id
   // 如果没有设置props.id
   renderKey ===  ccUniqueKey
}

@fantasticsoul
Copy link
Contributor

已优化,见示例:https://codesandbox.io/s/render-key-dwrx1?file=/src/App.js
id 即可作为renderKey标识

@fantasticsoul
Copy link
Contributor

我会尽量优先吧高频使用的api逐步补齐到足够友好的程度,感谢建议

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants