我无法在React / Redux

时间:2019-10-22 21:33:22

标签: javascript reactjs redux

我有以下代码,我想返回要在React Router上用于私有路由的状态(允许在isAuthenticated()返回true时进行访问)。

import React from 'react'
import { useSelector } from 'react-redux'

export const isAuthenticated = () => {

    const auth = useSelector(state => state)

    return auth
}

但是我遇到了这个错误:

Line 6:  React Hook "useSelector" is called in function "isAuthenticated" which is neither a React function component or a custom React Hook function

我不知道如何解决它。有人知道吗?谢谢

3 个答案:

答案 0 :(得分:2)

由于要创建新的自定义挂钩,因此将函数名称更改为useIsAuthenticatedcustom hooks

答案 1 :(得分:1)

仅允许将挂钩用于其他挂钩的定义(必须以“ use”开头)或用于实现功能性React组件。所以要么直接在组件中使用

const component = () => {
  const auth = useSelector(state => state)
  return <div> {doSomethingWith(auth)} </div>;
}

或者,如果您打算将方法isAuthenticated用作新的钩子,则将其命名为Damian建议

const useIsAuthenticated = () => {
  const auth = useSelector(state => state)
  return auth
}

答案 2 :(得分:-1)

只需转动它即可对功能组件做出反应


导出函数isAuthenticated(){

const auth = useSelector(state => state)

return auth
}