【问题标题】:Page Navigation not working on Button Click页面导航不适用于按钮单击
【发布时间】:2022-01-04 12:45:32
【问题描述】:

当我尝试通过单击按钮导航到 /addData 组件时,我不知道为什么 React Router 不起作用。当我尝试使用路径时它应该正常工作,但当我单击按钮时它不会。我想知道我做错了什么。请注意,这是我第一次使用 React Router。我使用的 React Router 版本是react-router-dom": "^5.3.0 这是代码。

App.js

import MainScreen from "./screens/main_screen/main_screen";
import AddDataScreen from "./screens/add_data/add_data";
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';

function App() {
  return (
    <div className="App">
      <Router>
        <Switch>
          <Route exact path="/" component={MainScreen}>
          </Route>
          <Route path="/addData" component={AddDataScreen}>  //This is a blank page with Add Data written on it
          </Route>
        </Switch>
      </Router>
    </div>
  );
}

export default App;

我打算从中导航的按钮所在的组件:

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

const FloatingButton = () => {

    const addScreen = () => {
        <Link to="/addData">Add Data</Link>
        console.log("Clicked")
    }

    return (
        <div className="floatingButton">
            
            <div className="addFloat" onClick={addScreen}>   //The button
                <IoMdAdd color={"white"} size={"20px"}/>
            </div>
            
        </div>
    );
}

export default FloatingButton;

【问题讨论】:

    标签: reactjs react-router-dom


    【解决方案1】:

    您的addScreen 函数只返回Link,它是一个组件,并且这种方法不会调用任何重定向操作(如您所见here,链接导致&lt;a&gt; 元素)。

    您可以使用useHistory 挂钩访问history 对象并推送addData 路由:

    import { useHistory } from "react-router-dom";
    
      let history = useHistory();
    
      const addScreen = () => {
        history.push("/addData");
      }
    

    【讨论】:

    • 感谢您的回答。我现在的问题是,我们什么时候使用链接在页面之间导航?
    • 这主要是出于语义原因。使用button 元素来重定向用户在语义上是不正确的,因为您应该为此使用a。如果您有兴趣,这个答案有更详细的解释:stackoverflow.com/a/64443954
    猜你喜欢
    • 2018-02-15
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多