简体   繁体   English

React useNavigate 错误不是函数

[英]React useNavigate is erroring as not a function

So in previous React version I was able to use Redirect to change from one page to another when using some condition on if it would change.所以在之前的 React 版本中,当使用某些条件来判断它是否会改变时,我能够使用 Redirect 从一个页面更改到另一个页面。 But with v6 redirect is no longer usable.但是使用 v6 重定向不再可用。

import React, {useState, Redirect, useNavigate} from 'react';
import './App.css';
import {Link} from 'react-router-dom'

function Main() {
    const handleLogInUsernameChange = (event) => {
        setLogInUsername(event.target.value)
    }

    const handleLogInPasswordChange = (event) => {
        setLogInPassword(event.target.value)
    }

    let navigate = useNavigate();
    
    function RedirectTo(){
        navigate('/dashboard')
    }

    function checkLogInCred(){
        fetch("https://api.apispreadsheets.com/data/xxxxxxxxxxxxxxxxxxx/").then(res=>{
            if (res.status === 200){
                // SUCCESS
                res.json().then(data=>{
                    const yourData = data
                    for(var a = 0; a < yourData.data.length - 1;a++){
                        if(yourData.data[a].Password === logInPassword &&
                            yourData.data[a].UserName === logInUsername)
                            {
                                logInStatus = "Logged"
                                console.log("You have logged in")
                                a = yourData.data.length
                                //<Redirect to="/dashboard" />
                                RedirectTo()
                            }
                    }
                }).catch(err => console.log(err))
            }
            else{
                // ERROR
            }
        })
        //navigate('/dashboard')
    }

    return (
        <div>
            <p>
                <input type="text" placeholder="Enter username" onChange={handleLogInUsernameChange}></input>
            </p>
            <p>
                <input type="text" placeholder="Enter password" onChange={handleLogInPasswordChange}></input>
            </p>
            <p>
                <button onClick={checkLogInCred}>Login</button> 
            </p>
        </div>
    );
}

export default Main;

Seems like everything is only working in onClick functions only似乎一切都只在 onClick 函数中起作用

import {useNavigate} from "react-router-dom";

useNavigate is part of react-router-dom not React. useNavigate 是 react-router-dom 的一部分,而不是 React。

In your case, it will be something like:在您的情况下,它将类似于:

import {Link,useNavigate} from 'react-router-dom'

useNavigate is imported from react-router-dom, so in your case: useNavigate 是从 react-router-dom 导入的,因此在您的情况下:

import {Link,useNavigate} from 'react-router-dom';从'react-router-dom'导入{Link,useNavigate};

you are importing it from then react.您正在导入它,然后做出反应。

import React, {useState, Redirect, useNavigate} from 'react';

import it from react-router-dom从 react-router-dom 导入

import { useNavigate } from "react-router-dom";

hope it will resolve the redirection.希望它能解决重定向。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM