我刚刚开始使用useSelector
中提供的新react-redux
钩子。
我总是像这样直接将道具传递给我的选择器:
mapStateToProps(state, ownProps) {
return {
user: userSelector(state, ownProps.userId)
}
}
将道具直接传递到选择器中是否被认为是反模式?
如果为“否”,那么如何使用useSelector
实现这一目标?
如果为“是”,那么实现选择器参数化的正确模式是什么?
答案 0 :(得分:2)
在选择器中使用props
是一个好习惯。
选择器函数未接收到ownProps参数。但是,可以通过闭包(请参见下面的示例)或使用咖喱选择器来使用道具。
useSelector
接受带有state
参数的函数。如果将箭头函数传递给useSelector
,则可以闭包访问任何变量,包括props
。
import React from 'react'
import { useSelector } from 'react-redux'
export const TodoListItem = props => {
const todo = useSelector(state => state.todos[props.id])
return <div>{todo.text}</div>
}
还可以查看官方文档中的stale props页,了解如何避免本地props
使用中的某些错误。