错误:无效的挂钩调用。挂钩只能在功能组件的主体内部调用。使用useEffect时

时间:2020-11-11 19:50:36

标签: reactjs react-hooks

此代码中出现“无效挂钩”错误:

import React, { useState, useEffect } from 'react'
import { useLocation, useHistory, Link } from 'react-router-dom'
import $ from 'jquery'

import '../stylesheet/pages/pages.landing.css'
import '../stylesheet/global.css'

export default function Landing() {

    function useQuery() {
        return new URLSearchParams(useLocation().search);
    }

    useEffect(() => {
        alert('a')
    }, [])
}

错误在useEffect行中,你们可以帮我吗?

在“我的路线”脚本上调用着陆:

import { BrowserRouter, Route, Switch } from 'react-router-dom';

import Landing from './pages/Landing';

export default function routes() {
    return (
        <BrowserRouter>
            <Switch>
                <Route path="/" exact children={Landing} />
            </Switch>
        </BrowserRouter>
    )
}

1 个答案:

答案 0 :(得分:3)

children道具被称为作为常规函数 when you need to render,而不是组件-钩子只能存在于通过JSX语法创建的元素中,这些元素会转换为{{ 1}}。

虽然可以在内联React.createElement道具中使用JSX语法调用Landing,但仍可以:

children

使用component道具会更合适:

children={() => <Landing />}