44 条回复  ·  1012 次点击
wcf 小成 2024-4-15 08:50:06
有这个 API useImperativeHandle 相当于 vue 的 ref
LandCruiser 小成 2024-4-15 09:01:19
React 的官方文档看一遍吧,两种方法,一种是传递一个函数到 grid 组件里去,另一种是把状态提到 page 组件。
gogozs 小成 2024-4-15 09:06:12
@leaflxh 发送事件就是一对多了,楼主的例子更符合一对一的情况
Baymaxbowen 小成 2024-4-15 09:09:59
1 、通过一层层的回调
2 、通过状态管理库或者 context
3 、通过自定义事件,在 toolbar 发送事件,在 Grid 监听事件( https://mebtte.com/split_react_state_by_event )
lanlanye 小成 2024-4-15 09:18:50
推荐做法是把状态提到上层,毕竟你要在上层用,说明这个状态应该属于上层。
如果跨多层或者分散导致不方便一层层传递的话可以使用 Provider 之类的东西,但这不改变你把状态提升到上层的事实。
aliyun2017 小成 2024-4-15 09:26:15
如果这值不用即时渲染到页面上,就直接写一个缓存对象;要即时渲染就上状态管理
jguo 小成 2024-4-15 09:38:02
如果 toolbar 需要用到 grid 里的值,那这个值大概率不该属于 grid
mouyase 小成 2024-4-15 10:20:19
首先是上面各位大佬说过的问题。

这个 state 如果 grid 组件并不需要为其生产数据,而只是消费数据的话,那可以把 state 提升到上层去生产他的组件里面。
可以用 Provider+useContext 的形式跨级传入,也可以用 props 逐级传入。当然你用一些全局的状态管理也不是不行。

如果这个值不涉及到渲染,也可以把这个值定义为 ref ,然后给 grid 组件使用 forwardRef 高阶函数包裹,同时使用 useImperativeHandle 把数值/函数暴露给父级,父级通过 ref.current.数值的形式获取。

最主要的还是看这个数值的作用和来源是什么。
ljpCN 小成 2024-4-15 10:34:07
大家只说了解决方案,但这个需求是否是合理的还得看具体场景,很多时候是设计问题,这个状态只需要 grid 自持就行。
zbowen66 小成 2024-4-15 10:47:39
jutai, 跨组件的 useState
返回顶部