【发布时间】:2020-03-12 08:31:21
【问题描述】:
所以我创建了一个需要在页面视图中触发的自定义钩子
所以我想我可以在 useEffect 中调用这个钩子,但看起来这不可能
那么有人知道我该怎么做吗?
一旦我触发它,它就会触发 Google Analytics,因此它必须处于加载状态。这可能吗?
好的,这是一个例子
export const usePageView = props => {
const counter = useSelector(state => state) // useSelector coming from react redux
console.log(counter, '===')
}
import { usePageView } from '../myhooks'
export const myComponent = () => {
useEffect(() => {
usePageView() // get error saying Error: Invalid hook call.
},[])
}
【问题讨论】:
-
问题加minimal reproducible example,只能调试能看到的。
-
@ChrisG 有帮助吗?添加了一些代码
-
你的钩子没有返回任何东西。钩子基本上是这样工作的:
const counter = usePageView();在功能组件的开头,然后是更多基于counter的代码。这个想法是,如果钩子返回的值发生变化(因为钩子的内部状态发生变化),那么使用该值的组件也会发生变化,因为它会被重新渲染。 -
如果您的实际目标是在功能组件中实现
componentDidMount(),那么您首先不需要钩子。这是一个简单的自定义钩子示例:codesandbox.io/s/dry-field-pe7sn -
@ChrisG 那么可能只是一个常规函数?
标签: javascript reactjs react-hooks