44 条回复  ·  2118 次点击
wisetc 小成 2024-4-14 20:54:58
这是 react 特别的地方,你说的对 react 组件是基于一般属性和回调属性的单向数据流,所有的子组件都可以由父组件自上而下赋值参数来控制,组件间也是提倡组合大于继承,不同的组件间传参共享数据是通过公共父类组件居中调度,这一点在某些清新下确实会不太方便,但是也在一定程度上避免了组件间的相互修改,而是给它什么就是什么显得很确定。若是例子中的情形也是可以通过设定属性的,react 是可以透传属性的,跨组件传递数据流确实会有一些不太方便就是,大应用可以用集中的数据管理作为公共的数据源获得其中的状态,然后转化为普通组件的属性
orzorzorzorz 小成 2024-4-14 21:06:18
是的,照文档看且不考虑状态管理,你只能一层层往上传。context 自己用还行,人多了就很乱。
歪个楼。19 年那会我自己要开个项目,rva 选了半天,最后选了 a 。从结果看,只能说 angular 这种填空式开发是真的是在三年后等你,不太会有像 op 主楼里这样的心智负担。
Ghrhrrv146 小成 2024-4-14 21:06:54
使用状态管理库最简单
wu67 小成 2024-4-14 21:32:36
使用状态库,
虽然项目早期时可能你会觉得烦琐,但是越往后越多需要共享状态的业务
ChefIsAwesome 小成 2024-4-14 21:42:07
这就是典型的组件一对多的模式,要靠一个中间人来完成传递。这个中间人肯定是这几个组件的上一级。前面几层楼推荐的 context ,状态管理库,都是这么个中间人。你定义 customEvent ,在 windows 上 dispatch ,那也叫中间人,也能解决你的问题。
你随便写就好了,不要想着非得符合“react”的路子才行。
ztcaoll222 小成 2024-4-14 22:41:15
context 、状态库、或者 Grid 直接写 localStorage(笑
Leviathann 初学 2024-4-14 23:20:14
@hahaFck 这是 explicity 的体现,不然你怎么知道这个组件有一个可以被捕获的事件

组件和一个 context 的配合一起使用也是一个比较常见的 pattern
darkengine 小成 2024-4-14 23:44:15
状态上移,我会把所有数据和点击的响应函数都放在 Page 里,Toolbar 只负责通知 Page 某个 Button 被点击了,Layout, Some, Grid 只负责根据数据展示。
maolon 小成 2024-4-14 23:59:42
状态上移+1 同时使用 children 的方法摊平组件
<Page>
    <Toolbar/>
    <Layout>
      <some>
         <Grid {...props}>
      </some>
    <Laout>
</Page>
ymcz852 小成 2024-4-15 00:28:51
@orzorzorzorz 那么,请问 angular 是如何处理呢🤔
返回顶部