Error: You must pass a function as a selector to useSelector

Error: You must pass a function as a selector to useSelector

它在 useSelector 上显示错误 ... image

const Header = (props) => {
  const dispatch = useDispatch();
  const history = useNavigate();
  const userName = useSelector(selectUserName);
  const userPhoto = useSelector(selectUserPhoto);


userName and userPhoto code

useSelector 希望您将回调函数作为参数传递,并且在回调函数中您应该 return 您想要从 redux 存储中获得的任何值,因此例如您的 redux 存储由显示的一堆元素组成以下

 {
      user: {
        firstname: "first name",
        lastname: "lastname"
      }
      imgUrl: "https://some-url"
    }

所以现在让我们说如果你想从整个商店访问用户字段你可以这样做userInfo = useSelector((state) => state.user);这将return你是来自 redux 商店的用户对象

所以由于您没有将函数作为参数传递给 useSelector hook,因此出现错误 you must pass function as selector to useSelector 所以您基本上是将函数用作 select 或 select 你想访问 redux store 的哪一部分

useSelector 是一个高阶函数,作为参数你必须传递一个函数给它,如下所示:

const username = useSelector( (state)=>{state.user} )