当它是 React Hooks with Redux 时,它必须使用选择器吗?
When it is React Hooks with Redux, must it be using selectors?
以前用 React 和 Redux 的时候,有些人用选择器,有些人不用。
(我认为是"reselect" npm package,但我不确定)。
但是,当React有Hooks的时候,我觉得我们可以使用
useSelector()
useDispatch()
而不是所有 mapStateToProps
、mapDispatchToProps
、connect(...)(Component)
。但是,我们必须使用 useSelector()
吗?之前,我们可以选择使用或不使用选择器。是不是有了 React Hooks 和 Redux 之后,我们 就必须 使用选择器?
是的,您必须使用 useSelector
。我认为你在那里有点困惑:如果你要将 connect
与 mapStateToProps
一起使用,你 总是 在那里使用选择器函数:mapStateToProps
是那个选择器函数,可能由多个子选择器组成,您可能已经内联编写或从某处导入。
但是,如果您想从状态中获得任何值,您永远不会“选择不使用选择器”。我认为你对“什么是选择器”的概念有点太严格了。
您可以通过两种方式使用它:
// in your slice file
export const someSelector = state => state.something;
// in your component file
import someSelector from './sliceFile';
// in your component
useSelector(someSelector)
或直接内联:
useSelector(state => state.something)
这两个都是选择器,即使第二个看起来不太像。
一个只是提取到函数中,另一个是内联函数。两者都完全可以使用,从 JS 的角度来看,它们之间没有太大区别。
正如您提到的 reselect:reselect 生成“记忆选择器”,这是它之上的另一个概念。为此,您可以自由使用或不使用它,就在那里。
以前用 React 和 Redux 的时候,有些人用选择器,有些人不用。
(我认为是"reselect" npm package,但我不确定)。
但是,当React有Hooks的时候,我觉得我们可以使用
useSelector()
useDispatch()
而不是所有 mapStateToProps
、mapDispatchToProps
、connect(...)(Component)
。但是,我们必须使用 useSelector()
吗?之前,我们可以选择使用或不使用选择器。是不是有了 React Hooks 和 Redux 之后,我们 就必须 使用选择器?
是的,您必须使用 useSelector
。我认为你在那里有点困惑:如果你要将 connect
与 mapStateToProps
一起使用,你 总是 在那里使用选择器函数:mapStateToProps
是那个选择器函数,可能由多个子选择器组成,您可能已经内联编写或从某处导入。
但是,如果您想从状态中获得任何值,您永远不会“选择不使用选择器”。我认为你对“什么是选择器”的概念有点太严格了。
您可以通过两种方式使用它:
// in your slice file
export const someSelector = state => state.something;
// in your component file
import someSelector from './sliceFile';
// in your component
useSelector(someSelector)
或直接内联:
useSelector(state => state.something)
这两个都是选择器,即使第二个看起来不太像。
一个只是提取到函数中,另一个是内联函数。两者都完全可以使用,从 JS 的角度来看,它们之间没有太大区别。
正如您提到的 reselect:reselect 生成“记忆选择器”,这是它之上的另一个概念。为此,您可以自由使用或不使用它,就在那里。