是否可以为 useSelector 创建一个可重用的函数?

Posted

技术标签:

【中文标题】是否可以为 useSelector 创建一个可重用的函数?【英文标题】:Is it possible to create a reusable function for useSelector? 【发布时间】:2022-01-14 20:06:17 【问题描述】:

我很好奇是否有办法在redux 中重用useSelector,因为我在不同的屏幕上多次使用它。

我尝试像这样创建一个selector.ts 文件,但它不起作用,因为它不在商店内,也不是功能组件。知道如何重用此代码吗?

export const branch = useSelector((state: any) => state.branchReducer.branch);

【问题讨论】:

您可以创建 customHooks,它会始终为您返回该值。 ***.com/questions/61414860/… 您可能对createSelector感兴趣 【参考方案1】:

您可以将选择器函数粘贴到文件中,然后让每个组件导入选择器并将其传递给 useSelector:

// selectors.ts
export const branchSelector = (state: any) => state.branchReducer.branch;

// used like:
import  branchSelector  from './some/path'
const Example = (props) => 
  const branch = useSelector(branchSelector);
  // ...

或者您可以创建自定义钩子并使用它们:

// selectorHooks.ts
export const useBranch = () => useSelector((state: any) => state.branchReducer.branch);

// used like:
import  useBranch  from './some/path';
const Example = (props) => 
  const branch = useBranch();
  // ...

【讨论】:

以上是关于是否可以为 useSelector 创建一个可重用的函数?的主要内容,如果未能解决你的问题,请参考以下文章

XCode:是不是可以创建可重用的堆栈视图?

微服务应该可重用吗?

使用 KnockoutJS 创建可重用组件

具有 set Input() 任何类型的可重用组件是一个好习惯吗?

创建可重用的 SearchController

Angular Material mat-table 在组件中定义可重用列