事件联动
如果 A 和 B 事件存在联动关系
- 可以在组件中先后发射 2 个事件
- 在 A 事件定义中触发 B
接口调用放在 view 层
mode 内处理数据操作逻辑,同步的
配合 umi-request,接口调用尽量放在 view 层使用
useUpdateEffect 可以在组件 mounted 后的更新阶段执行
不要在 useModel 里面 selector
遵循 MVC,model 和 model 之间少一些交互,交给 hooks(controller)
在状态定义的位置,去编写该状态的副作用,不要反其道而行之,特意 依赖一个没有使用到的外部状态,只是为了用其副作用
不用直接定义 衍生状态,而是通过其他状态进行设置
import { StageComponentsModelItem } from '@/models/stageComponentsModel';import { useModel } from '@umijs/max';import { useEffect, useState } from 'react';const useSelectNodeMeta = () => {const [selectNodeMeta, setSelectNodeMeta] =useState<StageComponentsModelItem>();const [selectNodeId, setSelectNodeId] = useState<string>();const { stageComponentsModel } = useModel('stageComponentsModel',(model) => ({stageComponentsModel: model.stageComponentsModel,}),);useEffect(() => {if (selectNodeId) {setSelectNodeMeta(stageComponentsModel?.[selectNodeId]);} else {setSelectNodeMeta(undefined);}}, [selectNodeId]);return {selectNodeId,selectNodeMeta,setSelectNodeId,};};export default useSelectNodeMeta;
