Reactjs 如何将附加参数传递给useSelector
我正在从一个组件成功调用Reactjs 如何将附加参数传递给useSelector,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在从一个组件成功调用useSelector,该组件从一个id派生出一个产品名称 const productId = 25; // whatever const productName = useSelector( (state) => state.dashboard.dashboards.filter( ({ Id }) => Id === productId )[0].Name ); 但是,我的选择器依赖于productId,我将其存储在同一
useSelector
,该组件从一个id派生出一个产品名称
const productId = 25; // whatever
const productName = useSelector(
(state) =>
state.dashboard.dashboards.filter(
({ Id }) => Id === productId
)[0].Name
);
但是,我的选择器依赖于productId
,我将其存储在同一文件中的变量中。我想将此useSelector
调用存储在一个外部文件中,以便共享。我尝试了以下操作,但id
未定义:
selectors.js
import { useSelector } from "react-redux";
import { getProductNameById } from "./selectors";
const productId = 25;
const productName = useSelector(getProductNameById, productId);
export const getProductNameById=(存储,id)=>{
return store.dashboard.dashboards.filter(({Id})=>Id==Id)[0]
名称
}
some_file.js
import { useSelector } from "react-redux";
import { getProductNameById } from "./selectors";
const productId = 25;
const productName = useSelector(getProductNameById, productId);
不幸的是,
选择器
函数只接受存储的状态作为参数。我会考虑用一种应对方法来解决这个问题:
export const getProductNameById = id => store => {
return store.dashboard.dashboards.filter(({ Id }) => Id === id)[0]
.Name;
}
一些文件
import { useSelector } from "react-redux";
import { getProductNameById } from "./selectors";
const productId = 25;
const productName = useSelector(getProductNameById(productId));
看起来这样做的方法是:
const productName = useSelector((state) => getProductNameById(state, productId));
这是ReduxDocs教程处理这个问题的方法。
这应该是公认的答案