如何结合自定义挂钩和选择器结果?

时间:2020-05-15 14:20:58

标签: javascript reactjs react-hooks

我有一个自定义钩子,也有一些选择器,需要基于两者的组合设置最终标志。 我不能简单地编写一个将cos下面的代码组合在一起的函数,无论是hook还是选择器都不能在react FC之外使用

使这样的整个块成为某个地方的单个可重用函数的最佳方法是什么?

// selector
    const { activeIntents, writeRole, intents, permalink } = useSelector(state => state.companyIntentsReducer);
// custom hook
    const { hasExtendedRoleForCompany } = useJwtRoles();
// func calling the custom hook
    const intentWrite = hasExtendedRoleForCompany("intent-manage-write", permalink);
// final result combines both
    const editMode = writeRole && intentWrite

自定义钩子可以使用选择器吗?

1 个答案:

答案 0 :(得分:1)

您应该写一个custom hook,类似:

const useEditMode = () => {
  const { activeIntents, writeRole, intents, permalink } = useSelector(
    (state) => state.companyIntentsReducer
  );

  const { hasExtendedRoleForCompany } = useJwtRoles();
  const intentWrite = hasExtendedRoleForCompany(
    "intent-manage-write",
    permalink
  );

  return { isEditMode: writeRole && intentWrite };
};

export default useEditMode;

// Usage inside function component
const { isEditMode } = useEditMode();