Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何组合自定义挂钩和选择器结果?_Javascript_Reactjs_React Hooks - Fatal编程技术网

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

Javascript 如何组合自定义挂钩和选择器结果?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我有一个自定义钩子,也有一些选择器,需要根据这两个选项的组合设置最终标志。 我不能简单地编写一个结合了下面代码的函数,因为钩子或选择器都不能在react FC之外使用 使整个块成为一个可重用函数的最佳方法是什么 // selector const { activeIntents, writeRole, intents, permalink } = useSelector(state => state.companyIntentsReducer); // custom 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
自定义挂钩可以使用选择器吗?

您应该编写一个类似于:

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();

很好,所以自定义挂钩可以使用redux选择器?自定义挂钩可以使用(如
useSelector
)。不知道“使用redux选择器”是什么意思,“选择器”是传递给
useSelector
mapDispatchToProps
等的纯函数通常导致
React钩子“useSelector”在函数“x”中调用,该函数既不是React函数组件,也不是自定义React钩子函数实际使用时。但是您基本上已经回答了这个问题,所以是的,没有问题反应FC必须大写并返回JSX元素,自定义钩子必须使用前缀,没有魔法解析只是重新定义